2

CCMenuItemImageのドキュメントには、実際には何が行われるかは記載されていません。

かなりの数のサブクラスCCMenuItemがあります。ボタンとして使用しているプロジェクトを継承しました。

CCMenuItem *start;
start = [CCMenuItemImage itemFromNormalImage:[self prefixedImage:@"start button.png"]
                               selectedImage:[self prefixedImage:@"start button selected.png"]
                                      target:myTarget
                                    selector:@selector(start:)];

両方の状態で同じボタンを使用していまし。選択した状態で別の画像になるように変更しました。

アイテムをタッチするとハイライト表示され、ボタンを離すとターゲットアクションが送信されることを期待/期待していました(これは実行されます)。

(余談ですが、iOSの用語では、私はそれを知っhighlightedおりselected、2つの異なるものです。しかし、このライブラリにはその違いはないようです。)

それで:

  • この「メニュー項目」をボタンとして使うつもりですか?
  • このメニュー項目の選択した画像はいつ表示されますか?
  • 選択したとおりに表示するにはどうすればよいですか?
4

3 に答える 3

1

上記のコードは正しいです。

選択用の画像リソースがプロジェクトに追加されていなかったため、表示されていませんでした。作成時にエラー メッセージを出力した可能性がありますが (他の出力に埋もれています)、タップ時にエラー メッセージを出力しませんでした。

サイレント/セーフ エラーにより、ユーザー エラーの追跡が困難になりました。

于 2012-04-11T00:37:25.197 に答える
1

このコードを試してください...

CCMenuItemImage *backbtn = [CCMenuItemImage itemFromNormalImage:@"backbtn.png" selectedImage:@"backbtn_selected.png" target:self selector:@selector(LBback)];
CCMenu *Menu1 = [CCMenu menuWithItems:backbtn,nil];

[Menu1 alignItemsVerticallyWithPadding:15];
Menu1.position = ccp(160, 240);
[self addChild:Menu1];

これの助けを借りて..画像に触れると、選択した画像が表示されますが、それ以外の場合は通常の画像が表示されます... :)

後で関数が呼び出され、そのイメージを変更したい場合は、このように設定できます..

 [backbtn setNormalImage:[CCSprite spriteWithFile:@"backbtn_selected.png"]];
于 2012-04-10T05:35:21.130 に答える
1

CCMenuItem は、他のすべてのメニュー項目が継承する抽象クラスであるため、コードで行ったことは技術的に間違っています。

一方、CCMenuItem をサブクラス化して、独自のカスタム クラスを作成することもできます (たとえば、ボタンとラベルをメニュー項目として使用することはできません。ボタン自体を使用する必要があり、ラベルは上にあります。 .ただ表示するか、ラベルを使用し、下のボタンは...無意味です)

CCMenuItem をサブクラス化し、独自のクラスを作成すると、その問題が解決されます (つまり、画像と文字列を取り、ボタンを返すメソッドを作成できるということです)。

あなたがそこでやりたいことはこれです:

 CCMenuItemImage *button= [CCMenuItemImage itemFromNormalImage:@"start button.png"
                           selectedImage:@"start button selected.png"
                                  target:self
                                selector:@selector(start:)];

 CCMenu *start=[CCMenu menuWithItems:button,nil];
start.position=ccp(200,200);
[self addChild:start];

メニューに指を置くと、通常の画像が選択した画像に置き換えられますが、ボタンのバウンディングボックスでそれを離した場合にのみ有効になります (別名..ボタンを押して、ボタンから指を離すことができます)ボタンをクリックしてもアクティブになりません)。つまり、ある意味では、指を離すまでボタンが強調表示され、その後選択されます。

それはあなたの質問に答えましたか?

于 2012-04-09T22:01:12.543 に答える