2012-02-09 9 views
0

私はメニューが含まれているシーンに追加している、それはそうのように初期化された子層を持っている:cocos2d CCMenuItemImage:自己SIGABRT

- (id) init 
{ 
if((self=[super init])) 
{ 
    CGSize winSize = [[CCDirector sharedDirector] winSize]; 

    CCMenuItemImage* attackButton = [CCMenuItemImage 
            itemFromNormalImage:@"btnAttack.png" 
            selectedImage:@"btnAttack.png" 
            target: self 
            selector:@selector(attack)]; 

    CCMenu* menu = [CCMenu menuWithItems:attackButton, nil]; 
    menu.position = ccp(winSize.width-80,winSize.height-140); 
    [menu alignItemsHorizontally]; 
    [self addChild:menu]; 

} 
return self; 
} 

これがない限り、SIGABRTエラーでクラッシュ私は目標を「無」に変更する。なぜこれが機能しないのですか?どうすれば修正できますか?

答えて

0

あなたのクラスに定義されている攻撃がない場合、クラッシュするはずです。 攻撃するためのパラメータが本当に必要ですか?

それはあなたの問題だかどうかを確認するために

簡単な手順:攻撃方法を追加し、コンソール出力を確認してください)

target: self 
selector:@selector(attack)]; 

2:

1)、PARAMを削除するには、コードを変更する

-(void)attack 
{ 
    NSLog(@"test"); 
} 

問題がどこにあるかを理解するには、ナビゲータバーにブレークポイントを表示し、プラスボタンをクリックして例外ブレークポイントを追加してください。そうすればアプリがクラッシュしますコールスタックを参照して何が間違っているかを見ることができます

+0

攻撃が定義されています:セレクタから:を削除しましたが、それでも問題は解決しません。それはCCMenuItemImage宣言でクラッシュします。 – RSH1

+0

非常に奇妙です...コードは大丈夫です。メソッド名は正しくありません –

+0

不思議なことに、インターフェイスで攻撃を定義すると – RSH1

0

これは私がccmenuitemimageを作成したときに起こります。セレクタとして呼び出すmetdhodをチェックする必要があります。