14.Cocos2dx开发经验总结。

一、解决触屏事件同时触发的问题
如果这样设置触屏消息优先级CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, false);
则在CCControlButton的点击事件中会触发ccTouchBegan事件,为了不让其触发ccTouchBegan事件,则应该修改触屏优先级,如下
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 1000, false);


二、加密资源
1.使用TexturePackerGUI
2.在Data属性中选择cocos2d
3.在Texture format属性中选择zlib compr. PVR(.pvr.ccz, Ver.2)
4.Content protection属性中点击锁按钮,create a new key获取到32位数字的key(9d5fb65e163b6257569ac407444b0000)
5.将第4步中获取到的32位key分成4段,每段8位。
6.使用ZipUtils::ccSetPvrEncryptionKey(0x9d5fb65e,0x163b6257,0x569ac407,0x444b0000);解密资源,参数为第5步中的四段8位数字。
7.使用如下语句加载资源文件
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("game_sources.plist");
CCSpriteBatchNode * batchNode = CCSpriteBatchNode::create("game_sources.pvr.ccz");
batchNode->setPosition(CCPointZero);
this->addChild(batchNode);
8.使用如下语句为精灵添加图片

spSky=CCSprite::createWithSpriteFrameName(sp_blue_sky.c_str());


三、要使用string,必须添加using namespace std;命名空间。


四、资源配置可以在.h文件里面,直接使用静态变量即可,不要给它加类名。


五、使用getChildByTag方法获取子节点的时候不能跨级访问,比如sp1属于sp2的子节点,sp2又属于sp3的子节点,
则不能使用sp3->getChildByTag()去获取sp1。


六、在场景中如果注册了屏幕监听,请在onExit方法中一定要移除监听事件,否则即使切换了场景,之前的监听依然会在,
就会导致莫名奇妙的问题。

你可能感兴趣的:(14.Cocos2dx开发经验总结。)