ios - CCActionRemove/addChild 未在预定方法中一致显示

标签 ios objective-c cocos2d-iphone

请耐心等待,因为我是 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/

相关文章:

iphone - 为体系结构 'GCC 4.2' 选择了不受支持的编译器 'armv7'

Objective-C 静态常量变量

objective-c - 在后台执行任务

javascript - 如何使用 Objective-C 从 IOS Cordova 中的设备(本地数据库)中删除图像

iphone - 如何在 Cocos2D 中滚动标签上的字符?

ios - Cocoapods部署目标问题

ios - 在 iOS 中绘制气泡图?

ios - IAP 被拒绝,因为未提交所需的二进制文件问题

objective-c - cocos2d 的一种有效方式的随机 BOOL

iphone - 为什么这段代码在设备上运行缓慢但在 iPhone 模拟器上运行速度很快