使用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

转载于:https://www.cnblogs.com/shadow21/archive/2012/11/09/2763158.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值