cocos2dx: setDisplayFrame 设置精灵的定格帧,实现中途每次停止动画,精灵都保证在指定的一帧
设备/引擎:Mac(11.6)/cocos
开发工具:Xcode(13.0)
开发需求:需要实现中途每次停止动画,精灵都保证在指定的一帧,而不会出现乱帧影响展示效果
之前工程中有提到如何在工程中创建动画,除了实现动画,很多时候用户需要在游戏中进行点击互动,尤其是游戏中的角色需要跟用户进行互动,这个时候就既要满足角色播放动画的要求,又需要满足用户对角色的点击操作等等。
打个比方:如果每次用户点击角色后,只是简单的stopAction,那每次角色停留的帧就会非常随意,比如角色正在闭眼,此时刚好用户点击,那可能角色最后就一直定格在闭眼的状态,对用户的游戏体验不是很好,这时就需要对每次角色定格的帧进行预设,来提高游戏的整体体验。
setDisplayFrame 之前已经知道,工程中涉及到的动画均是将每帧打包成plist文件,再在工程中进行调用,setDisplayFrame就是取plist文件中的一帧来进行设置,可以很好的处理精灵定格帧的问题。
方法定义:setDisplayFrame(CCSpriteFrame *pNewFrame),参数为CCSpriteFrame类型,所以需要先获取一个帧图片信息,再传到方法中,便可以实现预设精灵的定格帧。
代码如下
CCSprite* newItemSpr = (CCSprite*)this->getChildByTag(获取动画精灵);;
CCSpriteFrame* itemAction= CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("要预设的帧图片名称");
newItemSpr->setDisplayFrame(itemAction);
至此便完成设置定格帧的操作,一般都是需要对动画进行强制停止时需要使用该方法。可以更好的提高用户天。
希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~
|