2011-12-21 33 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