cocos2d-x 2.x 获取当前动画是第几帧 (修复之前无法获取第几帧问题)
2013-03-27 21:20
459 查看
cocos2d-x 2.x 获取当前动画是第几帧 (修复之前无法获取第几帧问题)
分类: 游戏引擎cocos2d-x游戏引擎2013-03-27 21:201820人阅读评论(7)收藏举报
Cocos2d-x
猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网--Cocos2Dev.com,谢谢!
原文地址: http://www.cocos2dev.com/?p=391
有些人跟我QQ留言说
《cocos2d-x获取当前动画是第几帧》里面的方法已经不能对比到第几帧了,我看了下代码,找到了这个
[cpp]
view plaincopyprint?
CCSpriteFrame* CCSprite::displayFrame(void)
{
return CCSpriteFrame::createWithTexture(m_pobTexture,
CC_RECT_POINTS_TO_PIXELS(m_obRect),
m_bRectRotated,
CC_POINT_POINTS_TO_PIXELS(m_obUnflippedOffsetPositionFromCenter),
CC_SIZE_POINTS_TO_PIXELS(m_obContentSize));
}
CCSpriteFrame* CCSprite::displayFrame(void) { return CCSpriteFrame::createWithTexture(m_pobTexture, CC_RECT_POINTS_TO_PIXELS(m_obRect), m_bRectRotated, CC_POINT_POINTS_TO_PIXELS(m_obUnflippedOffsetPositionFromCenter), CC_SIZE_POINTS_TO_PIXELS(m_obContentSize)); }
大家看到了吧,到这里估计有人看出来问什么对比不到第几帧了吧。
当你调用displayFrame的时候,它重新生成了一个新的CCSpriteFrame对象给你,你拿着它和原来的作地址对比,肯定不相同,所以为什么不能找到相同的。
那么是不是就没有办法了呢?
想一下,相同帧不就是贴图相同吗?所以看下Texture,果然看到这个
[cpp]
view plaincopyprint?
GLuint CCTexture2D::getName()
{
return m_uName;
}
GLuint CCTexture2D::getName() { return m_uName; }
返回当前Texture的Name,这个name是GLuint,你可以看成它的ID,每个Texture都是唯一的ID。
所以把之前的对比方法稍微修改下就可以了。
下面是修改好之后的
[cpp]
view plaincopyprint?
int currentAnimIndex = 0;
//精灵当前播放的是第几帧
for(int i = 0; i < 5; i++)
{
//5张图5帧
GLuint tID = prite->getTexture()->getName();
CCSpriteFrame* animFrame = (CCSpriteFrame*)anim->getAnimation()->getFrames()->objectAtIndex(i);
if(tID == animFrame->getTexture()->getName()){
//这个i返回的只是一个索引,如果帧数是从1开始计算就要+1
currentAnimIndex = i+1;
}
}
int currentAnimIndex = 0; //精灵当前播放的是第几帧 for(int i = 0; i < 5; i++) { //5张图5帧 GLuint tID = prite->getTexture()->getName(); CCSpriteFrame* animFrame = (CCSpriteFrame*)anim->getAnimation()->getFrames()->objectAtIndex(i); if(tID == animFrame->getTexture()->getName()){ //这个i返回的只是一个索引,如果帧数是从1开始计算就要+1 currentAnimIndex = i+1; } }
现在可以获取到第几帧了,解决起来也不是很难,希望大家遇到问题,可以自己尝试这去找出原因,知道了原因就有解决的办法
相关文章推荐
- cocos2d-x 2.x 获取当前动画是第几帧 (修复之前无法获取第几帧问题)
- cocos2d-x 2.x 获取当前动画是第几帧 (修复之前无法获取第几帧问题)
- cocos2d-x获取当前动画是第几帧
- 关于Cocos2d-x中获取正在播放动画第几帧的问题
- cocos2d-x获取当前动画是第几帧
- cocos2d-x获取当前动画是第几帧
- 微信小程序开发之真机测试 地图定位 map API 无法获取当前位置的问题
- 微信小程序开发之真机测试 地图定位 map API 无法获取当前位置的问题
- node.js xmlreader无法获取CDATA区问题修复
- Cocos2d-x中子ccb动画无法正常播放的问题
- 关于cocos2d-x播放动画时获取第几帧的另一种方法
- Cocos2d-x 中获取动画当前帧数
- 微信小程序开发之真机测试 地图定位 map API 无法获取当前位置的问题
- android-获取相册图片及部分手机崩溃问题修复
- android google map 开发中的常见问题及解决(无法获取 google map apiKey 和Couldn't get connection factory client)
- action利用setter方法无法获取前台字段的问题
- 旧版本Cocos2d-X 在iOS6中libcurl.a及iOS6无法横屏问题
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 问题解决
- 当前路径获取的问题
- 之前BBextra在个别blackberry运行时无法显示菜单的问题的原因