cocos2d-x精灵动作不执行解决方法
来源:互联网 发布:手机百度云网络出错 编辑:程序博客网 时间:2024/05/17 08:15
首先,先来看下代码:
void GameEnemyBullet::setvisable(){ this->setVisible(true); //设置精灵可见 isvisable=true; this->runAction(CCJumpTo::create(3, CCPointMake(500, 500), 30, 5)); //让精灵执行跳跃动作 CCMessageBox("over", "over"); //弹一个小窗,只是为了验证是否执行到此}
代码也很简单,但当我执行时,调用此方法,总是不能执行跳跃动作,但确实函数执行了,因为已经弹窗了,也出现了一个静止的精灵,但它为啥不动呢。这就让人很迷惑了,为啥runAction不执行呢?
之后,我就看了下
bool GameEnemyBullet::init(){ CCSprite *bulletmainbody=CCSprite::create("DrDogZD.png"); bulletmainbody->runAction(CCRepeatForever::create(CCRotateBy::create(0.5, 350))); isvisable=false; this->setVisible(false); addChild(bulletmainbody,1); return true;}而类GameEnemyBullet是继承自CCNode的,在创建对象时,用的是create方法,也重写了onEnter方法,代码如下:
void GameEnemyBullet::onEnter(){ CCNode::onEnter();}后来,在CCLog()的帮助下,我发现重写的onEnter()就根本没有被调用,而且,更多的时候,我们根本就忘记了调用CCNode::onEnter();
这样,最终的效果就是,图片是出现了,当根本就不会执行任何动作,就一张图片静静的在那里了。
但这样也不对啊,理论上通过create创建GameEnemyBullet对象时,应该是先调用init()方法,后调用onEnter()方法的,但现在是没有调用的。
于是,我又看了创建GameEnemyBullet对象的类文件,这个文件是继承自CCLayer的,也重写了onEnter()方法,但是,我发现,在这个onEnter中,我没有调用父类的方法“CCLayer::onEnter();”。也就是说,我犯了一个新手最容易犯的错误,不要忘了在重写的onEnter方法中调用父类方法。
所以,在这个文件中,我添加了CCLayer::onEnter();后,静止的图片终于可以动了,而且GameenemyBullet中的onEnter方法也被调用了!!!
最后,还是优化下难看而又低效的代码吧:
void GameEnemyBullet::onEnter(){ CCNode::onEnter(); this->setContentSize(CCSizeMake(21, 62)); //CCLog("gameenemybullet onenter");}bool GameEnemyBullet::init(){ CCSpriteBatchNode *batchnode=CCSpriteBatchNode::create("DrDogZD.png"); addChild(batchnode,1,3); CCSprite *bulletmainbody=CCSprite::createWithTexture(batchnode->getTexture()); bulletmainbody->runAction(CCRepeatForever::create(CCRotateBy::create(0.5, 350))); isvisable=false; this->setVisible(false); batchnode->addChild(bulletmainbody,1); //CCLog("gameenemybullet init"); return true;}
总结下,主要是我在实例化GameEnemyBullet对象的NewGame中,重写了NewGame的onEnter方法,但在却没有调用基类的CCLayer::onEnter();方法,从而导致在创建GameEnemyBullet对象时,GameEnemyBullet自身的onEnter方法没有被调用。这样就使得添加上的精灵没有任何动作效果。
同理,当你发现一个cocos2d-x的文字按钮明明应该可以点击的,但现在确不可以点击了,除了是没有添加到CCMenu外,很有可能也是这个问题。
欢迎转载,转载请注明出处:http://blog.csdn.net/somestill/article/details/9875743
- cocos2d-x精灵动作不执行解决方法
- cocos2d-x中,多个精灵执行同样的动作
- Cocos2d-X 精灵、动作效果
- Cocos2d-X 精灵、动作效果
- cocos2d-x精灵的动作
- Cocos2d-X 精灵、动作效果
- cocos2d-x精灵切换动作出错
- cocos2d精灵与动作
- 精灵的执行动作
- 创建精灵、执行动作
- cocos2d-x 使用plist创建精灵并执行动画
- cocos2d-x(精灵类)
- cocos2d-x创建精灵
- Cocos2d-x精灵创建
- Cocos2d-x 精灵贴图
- Cocos2d-x 精灵移动
- cocos2d-x创建精灵
- cocos2d-x之精灵
- 单源最短路(Dijkstra)-poj1502
- sed 替换单引号
- Linux多线程编程 Demo
- JSP使用上传文件,并生产高清缩略图示例
- poj1005
- cocos2d-x精灵动作不执行解决方法
- 百度文库:让百度成为我们免费的推广员
- 看到一篇博客写的kmp算法,由于才疏学浅,难以理解,干脆自己实现个kmp算法
- redhat linux5下安装qq
- 串口调试几个小知识
- 三点让你的网站有权重
- 沃信科技数据容灾方案实施步骤
- 做为站长眼光要放在远方
- phpwind安装错误解决