シーンの遷移が発生しているときに、シーンに子として追加されたレイヤーの現在の位置を取得しようとしています。トランジションは編集された Cocos2D トランジションであり、新しいレイヤーが表示されている間にレイヤーを画面からスライドさせます。update メソッドを使用して、CCActionEase 内に独自の実装を作成しました。
#import "JoinedMapsScene.h"
#import "JoinedMapsLayer.h"
@implementation CCEaseInWithPercentMult
-(void) update: (ccTime) t
{
[other update: powf(t,rate)];
CCScene * scene = [[CCDirector sharedDirector] runningScene];
CCNode* layer = [scene getChildByTag:0];
NSLog(@"% .2f",layer.position.x); //returns 0
NSLog(@"% .2f",layer.position.y); //returns 0
}
ただし、遷移が発生すると、これらは 0 を返します。おそらく、それ自体に対する位置を取得しているためですか?
編集:
これはうまくいかないことがわかりました。これを行うことで適切なクラスを指すことで、現在のシーンに正しくアクセスできました。
JoinedMapsScene * シーン = (JoinedMapsScene *)[[CCDirector sharedDirector] runningScene];
そして、これを行うことで私の想定されるメソッドを呼び出します:
[シーン getJoinedMapsLayerPosition];
驚いたことに、移行が行われている間、現在の runningScene が私の移行クラスです!
それは私のこの例外を与える: -[ExitLTransition getJoinedMapsLayerPosition]: 認識されないセレクターがインスタンス 0x5e4e20 に送信されました
これを行う別の方法を見つける必要があります。