2012-02-27 7 views
2

カスタムグラフィックでムービークリップの上にカーソルを置いたときに表示される小さなハンドカーソルをbuttonMode = trueに置き換えます。AS3:ボタンのハンドカーソルグラフィックを変更する

アプリケーション全体に対してこれをグローバルに実行する方法はありますか?また、すべてのボタンに移動し、MOUSE_OVER、MOUSE_OUT、MOUSE_MOVEハンドラを追加する必要がありますか。マウスカーソルを非表示にして表示します。正しく配置しますか?

は...

答えて

-1

あなたが説明したが、その後これらのハンドラを指して、すべてのボタンにリスナーを追加すると、交換と位置決めを行うMOUSE_OVER、MOUSE_MOVEとMOUSE_OUTハンドラの単一のセットを書くことができ退屈そうです。複数のオブジェクトに対して同じハンドラを使用できることを覚えておいてください。

また、「ボタン」がMovieClipであると仮定すると、MovieClipを拡張するカスタムActionScriptクラスを作成し、このデフォルトの機能を定義し、すべてのボタンインスタンスでこのクラスをベースとして使用できます。以下を参照してください:

public class ButtonMovieClip extends MovieClip { 

     public function ButtonMovieClip() { 
      addEventListener(MouseEvent.MOUSE_OVER, buttonOver); 
      addEventListener(MouseEvent.MOUSE_OUT, buttonOut); 
      addEventListener(MouseEvent.MOUSE_MOVE, buttonMove); 
     } 

     public function buttonOver(event:MouseEvent) { 
      //Hide mouse and add replacement graphic 
     } 

     public function buttonOut(event:MouseEvent) { 
      //Show mouse and remove graphic 
     } 

     public function buttonMove(event:MouseEvent) { 
      //Position graphic where mouse should be 
     } 
    } 

鍵は、その後(フラッシュIDE内のコードによって、またはいずれかから)すべてのボタンは、このクラスから作成されることを保証することです。

+0

を私はあなたのBaseClassのアイデアが好き - トリックを行います:)ありがとう! – Mat

1

ネイティブカーソルを変更する方法があるようです。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/ui/Mouse.html#registerCursor()

しかし、あなたはフラッシュプレーヤーをターゲットにする必要があります10.2以降のみ...

+0

私が間違っていないと、** registerCursor **は異なる州に異なるカーソルを指定することを許可していないので、すべてのオブジェクトにMOUSE_OVERリスナーとMOUSE_OUTリスナーを追加して** registerCursor **と**を呼び出す必要がありますunregisterCursor **を代わりに使用します。確かに、MOUSE_MOVEハンドラはもう必要ありません。 – DNJohnson

+0

私はCS5しか持っていないので、テストできませんでした。しかし、registerCursorはカーソルの名前を取るので、 "MouseCursor.HAND"を送ると、 "system wide"という手のカーソルを "置き換える"べきです。繰り返しますが、私はそれをテストしていませんが、これは私がドキュメントを解釈する方法です。 –

+0

これは私が確認できます。あなたは 'Mouse.registerCursor(MouseCursor.BUTTON、cursorData)'を使ってbuttonMode = trueハンドカーソルをアプリケーション全体を通して10.2+で変更することができます。 –

関連する問題