Cocos2d 如何暂停一个动作
来源:互联网 发布:关闭135 445端口漏洞 编辑:程序博客网 时间:2024/04/29 11:08
这也是群里问的一个问题。。。。
第一反应 [node stopActionByTag: ];
后来发现 不对吖。。。。这样是 stop 而不是 暂停吖。。
然后想暂停和继续是什么东西呢? 是 pause 和 resume
然后去看ccnode的头文件,你会发现 只有 pauseAllScheduleAndActions 这个选项 可没有 by tag了。。
这不就神奇了么。。。。这么简单的问题 居然没有接口来实现它。。。。
那么就去看了下CCAction 的头文件
里面有:
+(id) action;
-(id) init;
-(id) copyWithZone: (NSZone*) zone;
-(BOOL) isDone;
-(void) startWithTarget:(id)target;
-(void) stop;
-(void) step: (ccTime) dt;
-(void) update: (ccTime) time;
也没有 pause。。那么 有没有可能 stop 后 在通过 update 或者 step 重新运行呢。。。
试了半天 无果
然后就又去试了一下 stop 之后的 isDone。。
结果发现返回的仍然是NO
也就是说 如果我的动作没有完全运行到底的话 他是不会认为已经结束了。。。
那么 既然 isDone 返回的是no 那么再runaction 一次 不就好了么。。。
然后就崩溃了。。throw出来的信息是 这个动作已经在这个node中运行
于是就好奇了吖。。。。然后又去看了一下头文件:
在stop 那里写着
//! called after the action has finished. It will set the 'target' to nil.
//! IMPORTANT: You should never call "[action stop]" manually. Instead, use: "[target stopAction:action];"
不去管它 语法,分析虚拟语气什么的 好无聊的。。
说的就是 这么个意思。。。不要手动用action stop 用 target stop。。。
然后就改成了target stop 再target runaction。。。问题解决了。。
测试用demo
if( (self=[super init])) {
CCSprite* sprite = [CCSprite spriteWithFile:@"Icon.png"];
sprite.position = ccp(100, 100);
CCMoveBy *move = [CCMoveBy actionWithDuration:10position:ccp(300,300)];
[sprite runAction: move];
[self addChild:sprite];
flag = true;
CCMenuItemImage* button = [CCMenuItemImageitemFromNormalImage:@"Icon.png" selectedImage:@"Icon.png"block:^(id sender) {
if (flag)
{
[sprite stopAction:move];
}
else
{
[sprite runAction:move];
}
flag = !flag;
}];
button.position = ccp(50, 50);
CCMenu *menu = [CCMenu menuWithItems:button,nil];
menu.position = CGPointZero;
[self addChild:menu];
}
return self;
- Cocos2d 如何暂停一个动作
- Cocos2d-x 如何暂停界面
- Cocos2d-x如何控制动作速度
- Cocos2d动作: 动作监听
- cocos2d 动作
- 如何在执行中暂停一个程序
- cocos2dx中精灵如何run一个动作
- cocos2d的暂停/恢复
- cocos2d的暂停/恢复
- cocos2d-iPhone暂停游戏
- cocos2d的暂停/恢复
- Cocos2d动作: 创建重复性动作
- C# 如何实现一个线程暂停和继续
- cocos2dx利用pauseAllRunningActions()暂停并恢复动作
- cocos2d的抛物线动作
- cocos2d-----菜单跟动作
- cocos2d的基本动作
- cocos2d-x CCAction:动作
- 跨平台运行Android应用 BlueStacks获高通投资
- mm,mil,inch,um的转换关系
- linux下各目录的作用
- SmartARM3250 Linux kernel porting
- 线程锁
- Cocos2d 如何暂停一个动作
- C语言也能干大事-----第2讲笔记
- camera 驱动主要函数功能
- 大型高并发高负载网站的系统架构
- oracle的临时表空间解决问题的步骤
- 炳哥linux arm
- 网络游戏同步法则
- 最全的Android源码目录结构详解
- arm-linux的gdb移植