MouseEventにはまる
mixiの日記にもほぼ同じこと書いてますが後々の検索などはこちらに書いた方が良いかなと思うので書いておきます。エントリータグもできたし。
MouseEventにちょっとはまってしまいました。今までのFlashだとonMouseMoveとかonMouseUpとかどのMovieClip に書いてもステージの上というかSWF上であればイベント取れてたんでその感覚でやろうとShapeとかもない空のSpriteクラスにわりあててたら動かない。あれやこれややってたらどうやらインスタンスの上でのみイベントが発生するらしく最初は空だったんでヒット領域がないような状態だったみたい。 今日AS3系のblogをチェックしてたら参考になることがfladdict.netさんのところに書いてありました。
AS3メモ MouseEventについて ~ fladdict.net blog
試したソースはこんな感じ
ちなみに下のソースはダブルのクリックのイベントが何故か取れません。理由は不明。だけどAdobeのサンプルもダブルクリック動いてない気がする(^^;
[追記]
野中さんにコメントで指摘いただいたようにInteractiveObject.doubleClickEnabledプロパティがデフォルトではfalseのようで以下の一文を追加でダブルクリックは動作しました。
mcClass.doubleClickEnabled = true;
package {
import flash.display.*;
import flash.events.*;
public class MouseTest extends Sprite{
public function MouseTest(){
trace("constructe")
var mcClass:MovieClip = new myClass();//ライブラリのMovieClip
mcClass.doubleClickEnabled = true;//追加
mcClass.addEventListener( MouseEvent.MOUSE_UP, upListener );
mcClass.addEventListener( MouseEvent.MOUSE_MOVE, moveListener );
mcClass.addEventListener( MouseEvent.DOUBLE_CLICK, dClickListener );
addChild(mcClass);
}
public function upListener( _event:MouseEvent ){
trace("MOSE_UP ", _event)
}
public function moveListener( _event:MouseEvent ){
trace("MOUSE_MOVE " , _event );
}
public function dClickListener( _event:MouseEvent ){
trace("DOUBLE_CLICK " , _event );
}
}
}
※flaのDocument ClassにMouseTestを設定,ライブラリの絵を書いたMCのclassにmyClassを設定
コメント
> ダブルのクリックのイベントが何故か取れません
_____
InteractiveObject.doubleClickEnabledプロパティの値を、trueに設定する必要があります。
投稿者: 野中 文雄 | 2006年07月17日 02:51
野中さん
>InteractiveObject.doubleClickEnabledプロパティの値を、trueに設定する必要があります。
ありがとうございます!
クラスのコンストラクタのところに以下の一文を入れて動作することを確認しました。
mcClass.doubleClickEnabled = true;
投稿者: kazutaka | 2006年07月17日 10:18