1

UIKit レイヤーの位置を Cocos2D シーン レイヤーと同期する必要があります。現在のシーンを画面から新しいシーンに移動するトランジションが発生します。CCActionEase を編集して、おそらくデリゲートのメソッドを呼び出して Cocos2D シーン レイヤーの現在の位置を送信できる独自の update メソッドを作成しました。必要なのは、CCActionEase でシーンの現在の位置を取得する方法だけです。CCActionEase 呼び出し update が何度も繰り返され、その間にシーンの位置が変化するため、ここにある必要があります。

これは、呼び出される順序での私のコードの概要です。

私のシーンの現在のレイヤーでは、トランジションのメソッドが呼び出されます:

[[CCDirector sharedDirector] replaceScene: [ExitUTransition transitionWithDuration:5.4 scene: [JoinedMapsScene scene]]];

そのクラスでは、私のカスタム CCEaseInWithPercentMult の actionWithAction が呼び出されます。

@implementation ExitUTransition

- (CCActionInterval*)easeActionWithAction:(CCActionInterval*)action {

    return [CCEaseInWithPercentMult actionWithAction:action rate:1.0f];

}

@end

CCActionEase では、update メソッドが呼び出されます。

@implementation CCEaseInWithPercentMult
-(void) update: (ccTime) t
{

    [other update: powf(t,rate)];

    //here I could pass the scene layer position

    [(cocosTestsAppDelegate *)[[UIApplication sharedApplication] delegate] adjustBGViewPosWithXOffset:scenePosX withYOffset:scenePosY];
}
@end
4

1 に答える 1

1

移動するレイヤーのsetPositionをオーバーライドしてみませんか?私のアプリケーションでこの手法を使用して、UITextFieldをレイヤーとともに移動すると、正常に機能します。

-(void)setPosition:(CCPoint)p
{
      [super setPosition:p];
      CGPoint uiKitPoint = [[CCDirector sharedDirector] convertToUI:p];

      //Move the UIKit object wherever
}
于 2012-10-04T22:35:32.107 に答える