スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【AS3.0】AS2のreleaseOutsideに該当する処理

AS2でいうところのreleaseOutside、つまりボタンをクリックした後リリースしたとき、
マウスカーソルがボタンの上にないときの処理方法がAS3だと大きく異なる。


http://www.adobe.com/jp/devnet/actionscript/articles/event_handling_as3_05.html



1. 目的のターゲットのmouse downを検出します。
2. mouse downイベントハンドラで、mouse upのstageにリスナーを追加します。
3. stageのmouse upリスナーで、Eventオブジェクトのtargetプロパティをチェックして、ターゲットがクリックされた元のオブジェクトであるかどうかを確認します。元のオブジェクトである場合は、元のターゲットでマウスが解放されています。元のオブジェクトでない場合は、オブジェクトの外でマウスが解放されています。
4. mouse upリスナー内のstageリスナーを削除します。

stageではすべてのマウスイベントをキャプチャするので、すべてのmouse upイベントがstageに受け取られると見なすことができます。mouse upリスナーをターゲットオブジェクトのmouse downリスナー内のstageに追加することで、次にマウスが解放されたとき、クリックされた元のオブジェクトの上で行われたmouse upか、オブジェクトの外で行われたmouse upか(mouse up outsideイベント)がわかります。
Flash CS3 Professional ActionScript 3.0プレビューの使用

1. 例2のコードサンプルを開きます。
2.

フレーム1のタイムラインスクリプトを次のスクリプトに置き換えます。

function boxDown(event:MouseEvent):void {
trace("box down");
stage.addEventListener(MouseEvent.MOUSE_UP, boxUpOutside);
}

function boxUpOutside(event:MouseEvent):void {
if (event.target != box) {
trace("box up outside");
}
stage.removeEventListener(MouseEvent.MOUSE_UP, boxUpOutside);
}

box.addEventListener(MouseEvent.MOUSE_DOWN, boxDown);

※理屈は分かるが、普段から意識できるかというと慣れるまでは難しそうなので、
機械的にMOUSE_DOWNしたときにstage上にMOUSE_UPプロパティで
実際にマウスがアップされたときにそのターゲットをチェックするイベントを登録し、
振り分ける、と覚えておくといいのかしらん。
ワンコウォッチ
プロフィール

AGOSO

Author:AGOSO
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
ワンコウォッチ[ベリー・レッド]
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。