2009-05-20 6 views
0

Cocos2d質問??cocos2dでタッチしますか?

どのようにタッチタイプを変更しますか?下をご覧ください

image = [MenuItemImage itemFromNormalImage:@"image1.png" selectedImage:@"image2.png" target:self selector:@selector(step1:)]; 
    Menu *menu = [Menu menuWithItems:image, nil]; 
    image.position = cpv(-135, -185); 
    [self addChild: menu z:2] 

step1は、後でコード内で何かを行うために定義された空です。私の問題はstep1が動作しないことではない、私の問題はstep1がユーザーがボタンの内側に触れるときに行くということです。ユーザーがボタンの内側をタッチすると動作します。助けてくれてありがとう!

答えて

1

MenuItem'sは現在「touch started」に応答することができず、「touch end」にのみ応答するようにハードコードされています。

105行目からMenu.mにccTouchesBegan宣言が表示されます。

あなたはメニューの現在の動作を変更したい場合、あなたはそのようにそれをサブクラス化できます

@interface MenuDown: Menu 
{ 
} 
@end 

@implementation MenuDown 
-(BOOL)ccTouchesBegan:(UITouch *)touches withEvent:(UIEvent *)event { 
    [self ccTouchesBegan:touches withEvent: event]; 
    if(item) { [item unselected]; [item activate]; } 
} 
@end 

これは未テストですが、基本的には...私はちょうどccTouchesEndedでMenu.mからいくつかのコードをつかみました新しいMenuDownクラスのccTouchesBeganのオーバーライド版にコピーしました。あなたはその後、としてあなたのメニューを定義し

:これはあなたを与える-should-

MenuDown *menu = [MenuDown menuWithItems: image, nil]; 

Cocos2DのMenuItemのからの応答「をタッチに反応するが始まった」...

しかし、これではありません本当に示唆されたように...「最終的な行動」とは対照的に、「ボタン」がタッチに反応することを望んでいる理由が何もわからないので...書かれているように、メニューは現在ユーザーがメニュー選択操作をキャンセルするには、スライドオフ...を選択します。

Menu/MenuItem'sは、タッチリアクションオブジェクト(すなわち、実際のゲームオブジェクト)として使用されることは意図されていません。

関連する問題