2011-12-21 31 views
1

如何在cocos2d iphone中添加当前运行场景中的过渡效果。意味着我正在制作一款游戏,在每个目标之后,我想对当前的运行场景给出淡化效果或任何类型的效果。如何在cocos2d中添加当前运行场景中的过渡效果iphone

如果我写这个,它会将当前场景替换为它的新场景。但我不想取代现场。

[[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0f scene:[GamePage scene]]]; 

是否有某种方式可以像这样在当前页面上显示效果。我知道这是错误的,但我想是这样的:

[self transitionEffect:[CCTransitionFade actionWithDuration:0.5]];

回答

5

对于场景,与Opacity相关的图层(CCNode的子类)操作将不起作用。 !

您可以使用transition或必须将CCFadeTo应用于您的所有精灵。

但是,如果你选择CCFadeTo到所有的精灵,这将需要突然分配大量的动作! FPS慢下来!

另一种最好的方法:

告诉您的设计师,使1 x 1像素方形黑点的图像。 最后在init方法中添加此代码。

CCSprite *temp=[CCSprite spriteWithFile:@"squaredotBlack.png"]; 
    temp.position=ccp(s.w/2,s.h/2); 
    [self addChild:temp z:50000]; //set as most top layer 
    temp.scaleX=s.w; 
    temp.scaleY=s.h; 
    temp.opacity=0; 

然后应用,对于整个屏幕的“淡出”过程,增加不透明度。

temp.opacity=0; 
    [temp runAction:[CCFadeTo actionWithDuration:1 opacity:255]]; //0 to 255 

然后应用,对于整个屏幕的“淡入”过程,减少不透明度。

temp.opacity=255; // this will cover whole screen with black color 
       [temp runAction:[CCFadeTo actionWithDuration:1 opacity:0]]; //255 to 0 
+3

将黑色和不透明度为0的CCColorLayer放到场景中,然后在该图层上运行CCFadeTo动作以获得所需的不透明度将会变得更加容易...然后不需要虚拟png。 – habitoti 2012-07-15 07:37:41

1

您可以在整个CCLayer

[self runAction:[CCFadeOut actionWithDuration:0.5f]]; 

执行的操作,也可以使用CCFadeTo褪色到所需的不透明度。

+0

此代码有效,但它只适用于CCLayer。我在图层上添加了一些精灵,并且我希望整个场景的效果不仅限于图层。请给我整个场景的代码。 – dayitv89 2011-12-21 11:46:03

+1

只需将runAction方法发送到场景实例而不是图层。 – LearnCocos2D 2011-12-21 14:54:46