2012-10-05 3 views
0

장면 전환이 발생하는 동안 장면에서 자식으로 추가 된 레이어의 현재 위치를 검색하려고합니다. 전환은 편집 된 Cocos2D 전환으로 새로운 레이어가 나타나면 레이어를 화면 밖으로 밀어냅니다.Cocos2D : 다른 클래스의 장면에서 레이어의 위치 가져 오기

#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 전환이 발생합니다 나는 업데이트 방법 CCActionEase 안에 내 자신의 구현을 만들었습니다. 아마도 나는 그 자신과 관련된 입장을 취하고 있기 때문에?

편집 : 내가 발견

이 작동하지 않습니다. 다음과 같이 올바른 클래스를 가리켜 내 현재 장면에 올바르게 액세스했습니다.

JoinedMapsScene * scene = (JoinedMapsScene *) [[CCDirector sharedDirector] runningScene];

그리고 이렇게 내 생각 메소드를 호출 :

[현장 getJoinedMapsLayerPosition]

놀랍게도 전환이 진행되는 동안 현재 runningScene이 전환 클래스입니다.

그것은 내이 예외 제공 : 를 - [ExitLTransition getJoinedMapsLayerPosition] : 인식 할 수없는 선택기 예를 0x5e4e20 내가이 일을 다른 방법을 강구해야

로 전송.

답변

0

AppDelegate.h이 추가 :

@class CCLayer; 

@interface AppController : NSObject <UIApplicationDelegate, CCDirectorDelegate,UIGestureRecognizerDelegate> 
{ 
    CCLayer    *mCurrentLayer; 

} 

@property (nonatomic, retain) CCLayer *currentLayer; 

가 AppDelegate.mm이 추가 :

@implementation AppController 
@synthesize currentLayer = mCurrentLayer; 

당신의 레이어 초기화 클래스 사용이에서. 모든 장면에서. 당신은 어디 프로젝트에서 확인할 수 있습니다

@implementation MyMainMenu 

+(CCScene *) scene 
{ 
    // 'scene' is an autorelease object. 
    CCScene *scene = [CCScene node]; 

    // 'layer' is an autorelease object. 
    MyMainMenu *layer = [MyMainMenu node]; 

    AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; 
    app.currentLayer = layer; 

    // add layer as a child to scene 
    [scene addChild: layer]; 

    // return the scene 
    return scene; 
} 

..

AppController *app = (AppController*) [[UIApplication sharedApplication] delegate]; 

if([app.currentLayer isKindOfClass:[MyMainMenu class]]) 
{ 
    MyMainMenu *mm = (MyMainMenu*) app.currentLayer; 
    [mm calFunction]; 
} 
관련 문제