2012-07-16 2 views
0

redClick이라는 메서드가있는 ButtonLayer 클래스가 있습니다. redClick의 구현은 다음과 같습니다 ..CCAction (CCTintTo)를 다른 클래스의 메서드와 함께 호출하여 다른 클래스의 CCSprite를 변경합니다.

-(void) redClick { 
    [red runAction: [CCTintTo actionWithDuration:0.1 red:200 green:200 blue:200]]; 
} 

변수 빨간색은 ButtonLayer 클래스의 CCSprite입니다.

CCLayer로부터 상속받은 MainLayer라는 또 다른 클래스가 있습니다. 이 클래스의 장면 방법은 다음과 같습니다 ..

+(CCScene *) scene 
{ 
    CCScene *scene = [CCScene node]; 

    overlay = [ButtonLayer node]; 
    HelloWorldLayer *layer = [HelloWorldLayer node]; 

    [scene addChild: layer]; 
    [scene addChild: overlay]; 

    return scene; 
} 

을 MainLayer 내 ccTouchesBegan 방법, 나는 [오버레이 redClick]를 부르지 만, 나는 그것을 호출 할 때, 아무것도 변경되지 않습니다. CCSprite는 변경되지 않습니다.

답변

0

HelloWorldLayer 'layer'에 오버레이 레이어를 추가하십시오.

+(CCScene *) scene 
{ 
    CCScene *scene = [CCScene node]; 

    overlay = [ButtonLayer node]; 
    HelloWorldLayer *layer = [HelloWorldLayer node]; 

    [scene addChild: layer]; 
    [layer addChild: overlay]; 

    return scene; 
} 
+0

redClick 메서드를 클래스 메서드로 만들고 [ButtonLayer redClick]을 호출하여 작동되도록했습니다. HelloWorldLayer와 씬 둘 다에 오버레이를 추가 한 후에 이것을 사용했습니다. 어느 쪽이든 작동합니다. 클래스 메소드 변환없이 위와 같이 레이어에 추가하면 작동하지 않습니다. 왜 .. – user1371455

관련 문제