Cocos2D iPhone - 淡化精灵留下碎片

时间:2012-02-15 01:49:24

标签: iphone ios cocos2d-iphone

我创建了一个精灵,在sprite中我有一个这样的标签。

CCLabelTTF *myLabel = [CCLabelTTF 
                        labelWithString:text
                        dimensions:CGSizeMake(mySpriteWidth*0.9, mySpriteHeight*0.9) 
                        alignment:UITextAlignmentCenter 
                        fontName:@"Helvetica Neue" fontSize:20.0f];

[myLabel setPosition: CGPointMake((mySpriteWidth/2.0f),(mySpriteHeight/2.0f))];
[mySprite addChild: myLabel];

如您所见,标签是mySprite的子项。

然后我使用此动作淡出精灵

id fadeOut = [CCFadeOut actionWithDuration:0.4];

精灵正确淡出,但标签继续在那里,傲慢地看着我......

这是一个错误还是我遗失了什么?感谢


我用来做淡化的代码就是:

    CCSequence *sequence =[CCSequence actions:
                            fadeIn,
                            [CCDelayTime actionWithDuration:2.5],
                            fadeOut,
                            nil];


    [mySprite runAction:sequence];
//    [myLabel runAction:sequence];

将动作添加到标签,使其消失,但精灵停留在屏幕上...... :(

1 个答案:

答案 0 :(得分:0)

你应该在淡入淡出完成后删除精灵。当它被删除时,如果你不打算再次使用它。或者,如果愿意,可以切换其可见性。

我不能100%确定淡出是否会回应其内在观点。它会影响从CCRGBAProtocol继承的对象

CCFadeout reference

至少可以解决你的问题。如果您希望标签淡出,您也可以使用getChildByTag访问标签,以使其具有淡入淡出效果。

但是你需要创建一个新的淡入淡出效果,在cocos中实现动作的方式是2个对象可以运行相同的动作,后者将会。