0

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 は、コードの後半で何かを行うために定義された void です。私の問題は、ステップ1が機能しないことではありません。私の問題は、ユーザーがボタン内でタッチアップしたときにステップ1が実行されることです。ユーザーがボタンの内側に触れたときに動作するようにしたいと思います。助けてくれてありがとう!

4

1 に答える 1

1

MenuItem は現在、「タッチ開始」に応答できず、「タッチ終了」のみに応答するようにハードコードされています。

Menu.m の 105 行目から、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 のオーバーライドされたバージョンにコピーしました。

次に、メニューを次のように定義します。

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

これにより、Cocos2D MenuItem の ...

ただし、これは実際には提案されていません...「最終アクション」ではなく、「ボタン」をタッチに応答させたい理由がわかりません...書かれているように、メニュー現在ユーザーが押し下げてからスライドすることを可能にします...メニュー選択アクションをキャンセルします。

Menu/MenuItem は、「タッチ リアクティブ オブジェクト」(つまり、実際のゲーム オブジェクト) として使用することを意図したものではありません。

于 2009-05-30T18:06:17.643 に答える