我尝试在QtCreator中运行cocos2d-x v 2.2 helloword项目.我正在使用基于此存储库的此项目文件https://github.com/FlyingFishBird/cocos2d-x_2_0_4_templete_for_qtcreator/graphs/contributors
TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt CONFIG(debug, debug|release) { DESTDIR = bin/debug/ } CONFIG(release, debug|release) { DESTDIR = bin/release/ } RESOURCES = Resources.qrc SOURCES += Classes/AppDelegate.cpp \ Classes/HelloWorldScene.cpp \ proj.linux/main.cpp HEADERS +=Classes/AppDelegate.h \ Classes/HelloWorldScene.h COCOS2DX_ROOT = $$system(echo $COCOS2DX_ROOT) # set include path and depend path COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/cocos2dx \ $$COCOS2DX_ROOT/cocos2dx/include \ $$COCOS2DX_ROOT/cocos2dx/cocoa \ $$COCOS2DX_ROOT/cocos2dx/kazmath/include \ $$COCOS2DX_ROOT/cocos2dx/platform \ $$COCOS2DX_ROOT/CocosDenshion/include \ $$COCOS2DX_ROOT/extensions \ $$COCOS2DX_ROOT/external DEFINES += LINUX COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/cocos2dx/platform/linux LBITS = $$system(getconf LONG_BIT) contains(LBITS,64) { COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/platform/third_party/linux/include64 STATICLIBS_DIR += $$COCOS2DX_ROOT/cocos2dx/platform/third_party/linux/libraries/lib64 contains(COCOS2D-X_MODULES,CocosDenshion) { SHAREDLIBS_DIR += $$COCOS2DX_ROOT/CocosDenshion/third_party/fmod/lib64/api/lib SHAREDLIBS += -L$$SHAREDLIBS_DIR -lfmodex64 } DEFINES += NDEBUG SHAREDLIBS += -L$$COCOS2DX_ROOT/lib/linux/release -Wl,-rpath,$$COCOS2DX_ROOT/lib/linux/release STATICLIBS += $$COCOS2DX_ROOT/lib/linux/release/libbox2d.a SHAREDLIBS += -lcocos2d -lrt -lz SHAREDLIBS += -lfreetype -lcurl -lGL -lGLEW # SHAREDLIBS += -lxml2 -lpng -ljpep -ltif\f SHAREDLIBS += -lcocosdenshion SHAREDLIBS += -Wl,-rpath,$${SHAREDLIBS_DIR} SHAREDLIBS += -Wl,-rpath,$$STATICLIBS_DIR LIBS += $${STATICLIBS} LIBS += $${SHAREDLIBS} } INCLUDEPATH += $${COCOS_INCLUDE_DEPEND_PATH} DEPENDPATH += $${COCOS_INCLUDE_DEPEND_PATH}
我的main.cpp文件:
#include "../Classes/AppDelegate.h" #include "cocos2d.h" #include "CCEGLView.h" #include#include #include #include #include "../Classes/AppDelegate.h" USING_NS_CC; // 500 is enough? #define MAXPATHLEN 500 int main(int argc, char **argv) { // get application path int length; char fullpath[MAXPATHLEN]; length = readlink("/proc/self/exe", fullpath, sizeof(fullpath)); fullpath[length] = '\0'; std::string resourcePath = fullpath; resourcePath = resourcePath.substr(0, resourcePath.find_last_of("/")); resourcePath += "/../../Resources/"; // create the application instance AppDelegate app; CCApplication::sharedApplication()->setResourceRootPath(resourcePath.c_str()); CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setFrameSize(800, 480); return CCApplication::sharedApplication()->run(); }
项目编译正确无误,但是当应用程序运行时,黑屏的窗口会在下一刻出现并消失.我认为run()方法返回-1.控制台输出打印我:
cocos2d-x debug info [Ready for GLSL] cocos2d-x debug info [Ready for OpenGL 2.0]
我尝试在Ubuntu 12.04上运行我的项目.谁能知道我做错了什么?
=====编辑AppDelegate:
#include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { } bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object CCScene *pScene = HelloWorld::scene(); // run pDirector->runWithScene(pScene); return true; } // This function will be called when the app is inactive. When comes a phone call,it's be invoked too void AppDelegate::applicationDidEnterBackground() { CCDirector::sharedDirector()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); // if you use SimpleAudioEngine, it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }
但我认为,appdelegate的代码永远不会执行:/