2012-04-09 15 views
2

documentation for CCMenuItemImageは実際に何をしているのかわかりません。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版の用語で、私はhighlightedselectedは、2つの異なるものです。しかし、このライブラリはその違いを持っ​​ていないようだというを知っ。)

ので:

  • がそれですこの "メニュー項目"をボタンとして使用することを意図していますか?
  • このメニュー項目の選択された画像はいつ表示されますか?
  • 選択して表示するにはどうすればよいですか?
+0

質問をしながら気が散ってくると、あなたは質問しません。 :) 3を追加するように編集しました。 – bshirley

答えて

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]; 
:あなたはこれがある何をしたい画像や文字列やボタンを返す)

メニューに指を置くと、通常の画像が選択された画像に置き換えられますが、ボタンの境界ボックスで解除するだけです(ボタンを押すか、指を動かすかボタンから離して、それはアクティブにならない)。 したがって、指を離すまでボタンが強調表示され、次に選択されます。

あなたの質問にお答えしましたか?

+0

抽象スーパークラスではなく、 'CCMenuItemImage'を作成しています。 – bshirley

+1

私のコードを試しましたか?それは動作しますか?何がそれで動かないの? – skytz

+0

ああ!ちょうど私が新しいイメージをファイル構造に追加したことを認識しましたが、プロジェクトには__not__しません。画像が見つからないときは、静かに/安全に失敗していました。 #usererrorブレインストーミングしてくれてありがとう! – bshirley

1

あなたがイメージに触れるthis..whenの助けにより、

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"]]; 
1

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

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

サイレント/セーフフェイルは、ユーザーエラーを追跡しにくくしました。

関連する問題