1

我需要将 UIKit 层的位置与 Cocos2D 场景层同步,发生的过渡将当前场景从屏幕上移出新场景。我已经编辑了 CCActionEase 来制作我自己的更新方法,它可能会在我的委托中调用一个方法来发送我的 Cocos2D 场景层的当前位置。我所需要的只是一种在 CCActionEase 中以某种方式获取场景当前位置的方法。它需要在这里,因为 CCActionEase 一遍又一遍地调用更新,而当它存在时,场景的位置正在改变。

这是我的代码的运行顺序,以便调用。

在我的场景当前层中,我的转换方法被称为:

[[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 回答