0

actionWithTargetを(JoinedMapsLayer *)self.parentに設定してCCCallFuncOを動作させることができないようです

JoinedMapsLayerは、スプライトクラスが追加される親ノードです。

スプライトクラス内にメソッドがあります:

-(void) playAction:(NSString*)name withMessagePart:(NSString *)messagePart {

    id displayMessageBox = [CCCallFuncO actionWithTarget:(JoinedMapsLayer*)self.parent
                                                selector:@selector(displayMessageBox:)
                                                 object:[NSString stringWithFormat:messagePart]];


    if([name isEqualToString:@"shiver"]){

        id a1 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x+2, self.sprite.position.y)];
        id a2 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x-4, self.sprite.position.y)];
        id a3 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x+4, self.sprite.position.y)];
        id a4 = [CCMoveTo actionWithDuration:.05 position:ccp(self.sprite.position.x-2, self.sprite.position.y)];
        [self.sprite runAction:[CCSequence actions:a1,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a2,a3,a4,displayMessageBox, nil]];

    }

    else if([name isEqualToString:@"spin"]){

        id a1 = [CCRotateBy actionWithDuration:.5 angle:360];
        [self.sprite runAction:[CCSequence actions:a1,displayMessageBox, nil]];

    }
}

スプライト上で問題なくアクションを実行しますが、親ノードのメソッドを呼び出そうとしています。確認するNSLogがありますが、何も起こりません。明らかな理由はありますか?

親ノードのinitで、クラスは可変配列に追加されます

HummingClass *hummingChar = [[HummingClass alloc] init];

            [characterArr addObject:hummingChar]

そして、後で次のようにクラスにアクセスします。

HummingClass *hummingChar = [characterArr objectAtIndex:interactionIndex];

興味深いのは、self.parentでクラッシュしないことです。そのため、親ノードを正しく指していないと思います。オブジェクトヘッダーに

#import "JoinedMapsLayer.h"
@class JoinedMapsLayer

編集:このような通常のメソッド呼び出しを行っても、機能しません:

[(JoinedMapsLayer*)self.parent displayMessageBox:@"whatever"];
4

1 に答える 1

0

何かひどいフォーラムの助けを借りてそれを理解しました。スプライトが配列に追加された場合、親プロパティを手動で割り当てる必要があります。

JoinedMapsLayer の init で、配列インデックスへの一時的なポインターを作成します。

tempHummingChar.parent = 自己;

于 2012-04-17T17:20:33.983 に答える