您的位置:首页 > 移动开发 > Cocos引擎

使用QT + cocos2dx制作工具

2012-11-09 19:10 302 查看
最近项目中使用到cocos2d-x,因为需要,决定做做工具

开始想法是MFC + OpenGL, 但是感觉完全脱离了cocos2dx, 工具又要用到cocos2dx的一些东西

后来看到了 /article/1667906.html

实现了 MFC + cocos2d-x, 但是MFC很久没用了,感觉真心不适应,每次写MFC,感觉都像第一次写一样

这次决定尝试下QT

QT的实现基本和上面MFC的类似, 参考QT的例子,实现一个window

void Window::initcocos2d()
{
cocos2dApp = new AppDelegate;
HWND hWnd = (HWND)this->winId();    // 关键, QWidget 与 HWND 的转换
CCApplication::sharedApplication().run(hWnd, TEXT("Hello"), 480, 320);
}


用一个定时器去刷新

void Window::renderCocos2dx(void)
{
CCApplication::sharedApplication().renderWorld();
}

Window::Window(QWidget *parent)
:QWidget(parent)
{
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(renderCocos2dx(void)));
timer->start(20);

setWindowTitle(tr("Hello GL"));
}


这里要用到qt的SIGNAL and SLOT

头文件 window.h

// window.h
class Window : public QWidget
{
Q_OBJECT   // 如果使用自定义 slots, 这个必须定义
private slots:
void  renderCocos2dx(void);


这里还得使用到QT安装目录bin下的moc.exe, 在命令行下 moc window.h -o moc_window.cpp

将生成的moc_window.cpp加入工程,否则会有一堆错误

关闭时要销毁, 重载 void closeEvent(QCloseEvent *);

void Window::closeEvent(QCloseEvent *event)
{
cocos2d::CCDirector::sharedDirector()->end();
cocos2d::CCDirector::sharedDirector()->mainLoop();

QWidget::closeEvent(event);
}


至于鼠标时间, 重载

/*virtual*/ void mousePressEvent(QMouseEvent *);
/*virtual*/ void mouseReleaseEvent(QMouseEvent *);
/*virtual*/ void mouseDoubleClickEvent(QMouseEvent *);


并修改 CEGLView_win32 添加对应处理鼠标事件的函数就OK

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: