2011年7月31日 星期日

cocos2d Scene切換特效.

簡單記一下.方便查找..
原本用的是 [[CCDirector sharedDirectorpushScene:[SelectLayer scene]];
把後面的 的 scene替換掉. 改成.
    [[CCDirector sharedDirector] pushScene:
     [CCTransitionSlideInT transitionWithDuration:1.0f scene:[SelectLayer scene]]];
就可以有換景的特效..
除了 CCTransitionSlideInT
還有其他類似的可以用 都是 CCTransition... 開頭.

另外,如果是用 [[CCDirector sharedDirectorpopScene];
無法加上換景的特效.

要加特效的話要在 在 這裡 有人提出一個方法.
1. 修改 CCDirector.h,在 -(void)popScene 下加上
- (void) popSceneWithTransition: (Class)c duration:(ccTime)t;

2.修改 CCDirectior.m , 在 -(void)popScene下加上

-(void) popSceneWithTransition: (Class)transitionClass duration:(ccTime)t;
{
 NSAssert( runningScene_ != nil, @"A running Scene is needed");

 [scenesStack_ removeLastObject];
 NSUInteger c = [scenesStack_ count];
 if( c == 0 ) {
  [self end];
 } else {
  CCScene* scene = [transitionClass transitionWithDuration:t scene:[scenesStack_ objectAtIndex:c-1]];
  [scenesStack_ replaceObjectAtIndex:c-1 withObject:scene];
  nextScene_ = scene;
 }
}

3.用
[[CCDirector sharedDirector] popSceneWithTransition:[CCTransitionSlideInB class] duration:0.5f];

取代原本的 [[CCDirector sharedDirectorpopScene]; 指令即可.
其中的 [CCTransitionSlideInB class] 看需要什麼效果就替換上去.

1 則留言:

  1. 順便再記錄一下.
    A Scene pushScene:B 換成 B Scene後,
    B Scene做完操作 popScene 回 A Scene.
    這時想讓A Scene做動作或重新繪製 , 可以在 A Scene的 - (void)OnEnter上做處理

    回覆刪除