COCOS2D对OpenGL进行得封装
今天一个菜鸟说:后面触发一个事件之后 又要播放一次
如果不删除之前的 会出现重叠的效果代码如下:
播放代码
-(void) TrafficShipAnimation
{
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"trafficshipwin.plist"];
CCSpriteBatchNode *spritebn = [CCSpriteBatchNode batchNodeWithFile:@"trafficshipwin.png"];
[self addChild:spritebn z:3];
NSMutableArray *ATFrames = [NSMutableArray array];
for (int i =1; i<=7; i++) {
[ATFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache]
spriteFrameByName:[NSString stringWithFormat:@"WJC3_fenlei2_yunshuchuan%d.png", i]]];
}
CCAnimation *ATAnimate = [CCAnimation animationWithFrames:ATFrames delay:0.2];
sprite_traffic= [CCSprite spriteWithSpriteFrameName:@"WJC3_fenlei2_yunshuchuan1.png"];
sprite_traffic.position = ccp(43+186/2,768-190-248/2);
[spritebn addChild:sprite_traffic z:3];
seq_traffic= [CCSequence actions:[CCAnimate actionWithAnimation:ATAnimate restoreOriginalFrame:NO],nil];
[sprite_traffic runAction:seq_traffic];
}
以下是对话
A:事件触发之后直接调用的TrafficShipAnimation?没有stop
sprite_traffic.stopAllActions;
[self TrafficShipAnimation];
菜鸟:事件触发代码
sprite_traffic.stopAllActions;
[self TrafficShipAnimation];
-(void) WinAnimation
{
sprite_traffic.stopAllActions;
[self TrafficShipAnimation];
}
A:
sprite_traffic.stopAllActions???你确定调用了那个方法了么.你是OC
[sprite_traffic stopAllActions]
另外,你的代码每次调用那个方法都会额外创建一个 CCSpriteBatchNode *spritebn = [CCSpriteBatchNode batchNodeWithFile:@"trafficshipwin.png"];
[self addChild:spritebn z:3];
和重新alloc一个sprite_traffic
这样不好,成员本来就应该保持alloc一次最好
菜鸟:那该怎样写呢
A:sprite_traffic的创建放到外面,或者初始化这个类的时候
还有那个batchnode
那个方法仅仅创建一个动画,重设sprite_traffic初始状态,然后run
如果你这个动画很平凡的话,你这个动画对象都可以当成成员
不用每次都创建,这样很浪费资源
我分享一断代码给你学习:
void runAnimation()
{
#define kCCMove_Time 3
#define kCCMove_End ccp(200,200)
#define kCCMove_Begin ccp(0,0)
CCMoveTo *mv = CCMoveTo::create(kCCMove_Time,kCCMove_End);
sprite -> stopAllActions();
sprite -> setPosition(kCCMove_Begin);
sprite -> runAction(mv);
}
//我没用帧动画和batchnode渲染
//原理一样
void runAnimation()
{
#define kCCMove_Time 3
#define kCCMove_End ccp(200,200)
#define kCCMove_Begin ccp(0,0)
CCMoveTo *mv = CCMoveTo::create(kCCMove_Time,kCCMove_End);
sprite -> stopAllActions(); //停掉动画
sprite -> setPosition(kCCMove_Begin); //重置状态
sprite -> runAction(mv); //run
}
//不要吧成员的创建放进这里面
//成员的创建应该在构造函数
分享到:
相关推荐
无脚本flash动画我的小作品无脚本flash动画小浣熊超级简单易学,专对菜鸟级别!
菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的
菜鸟教程之Diy留言动画教程,内附有详细的使用说明
菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作WINDOWS大全菜鸟操作...
刚学C语言的菜鸟用putchar写的一分钟NB动画(C语言写的动画) 你们看看觉得怎么样?
# 菜鸟商城 # 是一个仿淘宝客户端的实战课程,功能包括:1.支付(支付宝,微信,百度钱包) 、首页 、热卖 、商品大全 、购物车 、我的 、商品列表 、商品详情 、注册/登录 、收货地址 、我的订单 、我的收藏 ..... ...
远程文件共享(菜鸟版)动画演示教程,只有动画演示教程。
菜鸟宝典:局域网常见问题解答 电子书,基础教材!!!
菜鸟教程网站上的Python3教程还挺详细,想在没有网络的电脑上离线看但是发现网上没有资源,只有老版本的PDF文档,实在不方便阅读,所以自己做了一个,Python3菜鸟教程离线版内部包含20200914保存的完整离线版教程...
菜鸟谈VBA最最基础入门菜鸟谈VBA最最基础入门菜鸟谈VBA最最基础入门菜鸟谈VBA最最基础入门菜鸟谈VBA最最基础入门
“菜鸟产业园”跨境电商校企合作问题汇总以及解决对策探究.pdf
菜鸟如何大量获得IPC代理主机,只有动画演示教程。
菜鸟桌面菜鸟桌面菜鸟桌面菜鸟桌面菜鸟桌面
常用web开发工具 w3cschool菜鸟教程20141021常用web开发工具 w3cschool菜鸟教程20141021常用web开发工具 w3cschool菜鸟教程20141021常用web开发工具 w3cschool菜鸟教程20141021常用web开发工具 w3cschool菜鸟教程...
ActionScript菜鸟基础终极教程ActionScript菜鸟基础终极教程ActionScript菜鸟基础终极教程ActionScript菜鸟基础终极教程ActionScript菜鸟基础终极教程
菜鸟宝典() <br/> 菜鸟宝典()
菜鸟TO高手很实用的东西帮助解决跟人电脑问题,电脑不求人。
菜鸟网络招股书, 港交所,阿里巴巴,估值,物流,快递
很全面的菜鸟入门教材很全面的菜鸟入门教材很全面的菜鸟入门教材
文档内容是 www.runoob.com 官网的离线html文件,便于离线学习菜鸟教程,一共有42和html对应42个学习模块