请耐心等待,因为我是 OOP/ObjC/Cocos2d 的新手。
我有一个像这样每秒触发的方法:[self schedule:@selector(eyelidsBlink:) interval:1.0];
schedule
方法是这样的:
-(CCTimer *) schedule:(SEL)selector interval:(CCTime)interval
{
return [self schedule:selector interval:interval repeat:CCTimerRepeatForever delay:interval];
}
方法如下:
- (void)eyelidsBlink:(CCTime)dt{
CCActionRemove *actionRemoveEyelidsNormal = [CCActionRemove action];
[_whiteGuy_EyelidsNormal runAction:actionRemoveEyelidsNormal];
_whiteGuy_EyelidsBlink = [CCSprite spriteWithImageNamed:@"EyelidsBlink_iPhone4.png"];
_whiteGuy_EyelidsBlink.position = ccp(self.contentSize.width/2,self.contentSize.height/2);
[_whiteGuy_EyelidsBlink setScale:0.5];
[self addChild:_whiteGuy_EyelidsBlink];
CCActionRemove *remove_eyelidsBlink = [CCActionRemove action];
[_whiteGuy_EyelidsBlink runAction:remove_eyelidsBlink];
NSLog(@"Eyelids blinked");
_whiteGuy_EyelidsNormal = [CCSprite spriteWithImageNamed:@"EyelidsNormal_iPhone4.png"];
_whiteGuy_EyelidsNormal.position = ccp(self.contentSize.width/2,self.contentSize.height/2);
[_whiteGuy_EyelidsNormal setScale:0.5];
[self addChild:_whiteGuy_EyelidsNormal];
}
我能看到第一个眨眼,但之后就看不到其他任何眨眼了。我的 NSLog
每秒都在控制台中打印,所以我知道正在调用 eyelidsBlink
方法。
谁能帮我弄清楚为什么我在第一次眨眼后就看不到任何眨眼了?如果您需要更多信息,或者您是否可以建议任何测试来解决问题,请告诉我。
最佳答案
几乎没有时间渲染闪烁 Sprite ,因为您在添加它的瞬间就将其删除。您必须安排另一个选择器一次,即 eyeLidsBlinkOff 在 0.1 秒后运行并隐藏眨眼 Sprite 。
注意:这段代码效率很低。创建 Sprite 是一个相对缓慢的操作。取而代之的是将两个 Sprite 都保留为 child ,但将一个 Sprite 的 visible 属性设置为 NO。眨眼时只需翻转每个 Sprite 的可见标志。这也会使代码更短。
关于ios - CCActionRemove/addChild 未在预定方法中一致显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500746/