使用QT + cocos2dx制作工具


最近項目中使用到cocos2d-x,因為需要,決定做做工具

開始想法是MFC + OpenGL, 但是感覺完全脫離了cocos2dx, 工具又要用到cocos2dx的一些東西

后來看到了 http://blog.csdn.net/honghaier/article/details/7897077

實現了 MFC + cocos2d-x, 但是MFC很久沒用了,感覺真心不適應,每次寫MFC,感覺都像第一次寫一樣

這次決定嘗試下QT

QT的實現基本和上面MFC的類似, 參考QT的例子,實現一個window

1 void Window::initcocos2d()
2 {
3     cocos2dApp = new AppDelegate;
4     HWND hWnd = (HWND)this->winId();    // 關鍵, QWidget 與 HWND 的轉換
5     CCApplication::sharedApplication().run(hWnd, TEXT("Hello"), 480, 320);
6 }

用一個定時器去刷新

 1 void Window::renderCocos2dx(void)
 2 {
 3     CCApplication::sharedApplication().renderWorld();
 4 }
 5 
 6 Window::Window(QWidget *parent)
 7     :QWidget(parent)
 8 {
 9     QTimer *timer = new QTimer(this);
10     connect(timer, SIGNAL(timeout()), this, SLOT(renderCocos2dx(void)));
11     timer->start(20);
12 
13     setWindowTitle(tr("Hello GL"));
14 }

這里要用到qt的SIGNAL and SLOT

頭文件 window.h

1 // window.h
2 class Window : public QWidget
3 {
4    Q_OBJECT   // 如果使用自定義 slots, 這個必須定義
5 private slots:
6    void  renderCocos2dx(void);

這里還得使用到QT安裝目錄bin下的moc.exe, 在命令行下 moc window.h -o moc_window.cpp

將生成的moc_window.cpp加入工程,否則會有一堆錯誤

關閉時要銷毀, 重載 void closeEvent(QCloseEvent *);

1 void Window::closeEvent(QCloseEvent *event)
2 {
3     cocos2d::CCDirector::sharedDirector()->end();
4     cocos2d::CCDirector::sharedDirector()->mainLoop();
5 
6     QWidget::closeEvent(event);
7 }

至於鼠標時間, 重載

1     /*virtual*/ void mousePressEvent(QMouseEvent *);
2     /*virtual*/ void mouseReleaseEvent(QMouseEvent *);
3     /*virtual*/ void mouseDoubleClickEvent(QMouseEvent *);

並修改 CEGLView_win32 添加對應處理鼠標事件的函數就OK


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM