Cocos2d iphone Cocos2d PushScene和CCFadeTransition在没有调度程序的情况下是否可以正常工作?

Cocos2d iphone Cocos2d PushScene和CCFadeTransition在没有调度程序的情况下是否可以正常工作?,cocos2d-iphone,Cocos2d Iphone,是否有这样使用CCTransitionFade的原因 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [director_ pushScene:[CCTransitionFade transitionWithDuration:1 scene:[FirstScene node]]]; return YES; }

是否有这样使用CCTransitionFade的原因

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

 [director_ pushScene:[CCTransitionFade transitionWithDuration:1 
 scene:[FirstScene node]]];

 return YES;

}
然后第二个场景在第一个场景的init中被调用,就像游戏的常规品牌展示一样,为什么我没有设置一个比第一个CCTransitionFade计时器稍长的调度程序,为什么它会卡住

//in FirstScene Class
-(void) onEnter {

self = [super init];
if (self) {

   [[CCDirector sharedDirector] replaceScene:
   [CCTransitionFade transitionWithDuration:1.2 scene:[SecondScene node]]];
  }
 return self;
}
我的意思是我理解原因,但这是否意味着我一直在以错误的方式做这件事?是否有一种更可接受的方法来执行此CCTransitionFades,或者以这种方式使用调度程序是否正确

//in FirstScene Class
-(void)onEnter{

self = [super init];
if (self) {

  [self scheduleOnce:@selector(makeTransition:) delay:1.2];

 }
 return self;
}


-(void)makeTransition:(ccTime)dt {


      [[CCDirector sharedDirector] replaceScene:
      [CCTransitionFade transitionWithDuration:1 scene:[SecondScene node]]];

}
通过第二种方式和计划,我能够成功地得到我想要的

那么,我做错了什么吗?这只是我这边一个糟糕的解决方法吗?还是有一个正确的方法来解决这个问题


注意:做了一个更正,因为目前我确实有使用onEnter方法的代码。但我用init尝试过,它也有相同的行为。

在第一种情况下,当您从init调用replaceSecene时,调用函数的顺序如下所示:

  • (BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项

  • [第一场景节点]

  • 第一辉石岩

  • [[CCDirector sharedDirector]替换场景:

  • [导演(现场)

    问题是,当屏幕上没有场景时,您调用了replaceSecene,因此导演尝试将实际场景更改为FirstScene,该场景为NULL。第一个场景在pushScene之后出现在屏幕上


在第二种方法中,大多数都是有效的,但理论上这种解决方案是危险的,因为当你调用init并设置scheduler时,可能会有2秒的延迟。我不知道在cocos2d上这是可能的,它在一个线程中运行,但我认为在oneter函数中放置replace scene是一种更优雅的解决方案

看看更新我已经尝试过两种场景,onEnter和init,它们的行为方式都相同。您的锁定概念可能是正确的,但在我身上从未发生过,除非我故意在调度程序计时器上比上一个场景过渡计时器花费更少的时间。可能在ONENTERTransitiondFinish()中它会起作用。