0

実際には、ボタンが押されている限りスプライトを移動する必要があり、ボタンを離すとスプライトを停止する必要があります。

私のコードは以下の通りです:

 CCMenuItemFont *item1 = [CCMenuItemFont itemFromString: @"icon.png" target:self selector:@selector(doit)];
        CCMenu * taskMenu = [CCMenu menuWithItems:item1,  nil];
        [self addChild:taskMenu];

-void()doit
{
        spritevelocity = 80;
}

上記のコードは、ボタンがタップされたときにスプライトを動かし続けますが、ボタンが離されるとすぐにスプライトを停止する必要があります。

以下のコードを試しましたが、成功しませんでした:

-void()doit
{
    buttonpressed = YES;
    if (buttonpressed) {
        spritevelocity = 80;
    }
}

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
         buttonpressed = NO;
}

注:スプライトを停止するために spritevelocity = 0 にしたかっただけです。つまり、ボタンが離されたときに spritevelocity = 0 が必要です

4

2 に答える 2

1

selectedunselectedおよびactivateメソッドをオーバーライドする場合は、CCMenuItem をサブクラス化する必要があります。そこで、ボタンを好きなように動作させることができます。この場合、プレスだけでなく、リリースにも対応してください。CCMenu をオーバーライドする良い例を次に示します: http://johnehartzog.com/2009/10/easy-to-create-buttons-with-cocos2d/

于 2012-06-25T16:18:28.663 に答える
0

速度を直接設定しないのはなぜですか。

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
     buttonpressed = NO;
     spritevelocity = 0;
 }

いつdoIt呼ばれるか説明していただけますか?

于 2012-06-25T16:27:00.153 に答える