0

私は2つのレイヤーを持っており、ccTouchMovesイベントで、スプライトを破棄して再作成し、1番目のレイヤーから2番目のレイヤーに移動する必要があります

私はこれをそのようなことをしました

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
            sprite = [CCSprite spriteWithFile:@"file.png"];
            [[self parent] addChild: sprite]
            if (sprite)
            {
                [sprite ccTouchBegan:touch withEvent:event];
            //  [character ccTouchMoved:touch withEvent:event];
            }
            [self removeFromParentAndCleanup:true];
}

スプライトが作成され、メソッド ccTouchBegan が呼び出されましたが、その後、メソッドはすべて終了 します単純なタッチ イベントのように ccTouchMoved と ccTouchEnd を呼び出す方法

4

1 に答える 1

0

それが同じスプライトである場合、なぜそれを破壊して再作成するのですか? 同じスプライトを使い続けることができます。Kobold2Dでは、CCNode カテゴリにこのメソッドを追加して、ノードの所有権を現在の親から別の親に転送しました。

-(void) transferToNode:(CCNode*)targetNode
{
    CCNode* selfNode = [self retain];
    [self removeFromParentAndCleanup:NO];
    [targetNode addChild:selfNode z:selfNode.zOrder tag:selfNode.tag];
    [selfNode release];
}

重要な部分は、ノード (スプライト) を現在の親からクリーンアップせずに削除して、スケジューラとアクションが実行され続けるようにすることです。次に、子として別のノード (2 番目のレイヤー) に追加します。

于 2012-12-22T12:00:21.610 に答える