as3イベントフロー イベントオブジェクト

function onUp(e:MouseEvent) { 
などのeにはイベントオブジェクトが入っている。
プロパティ 情報の内容
target イベントが起きたインスタンスへの参照
type イベントの種類を表す文字列
localX イベント発生位置のx(水平)座標
localY イベント発生位置のy(垂直)座標
ctrlKey [Ctrl]キーが押されているかどうかをtrue/falseで判定
shiftKey [Shift] キーが押されているかどうかをtrue/falseで判定
message.text = e.target.name + "を押しました";


//マウスボタンを押した時に実行する関数
function onDown(e:MouseEvent) {
  if (e.target==e.currentTarget) {
    //イベント発生対象と,イベント通知対象(window)
    //が等しければドラッグ開始
    e.currentTarget.startDrag();
    message.text = "windowをドラッグ開始";
    //画面外までドラッグしたときにも関数を実行
    e.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,onUp);
  }
}
//マウスボタンを離した時に実行する関数 eにはイベントオブジェクト
function onUp(e:MouseEvent) {
  //targetの値によって処理を分岐
  switch (e.target) {
    case e.currentTarget.button1 :
      message.text = "button1を押しましたね";
      break;
    case e.currentTarget.button2 :
      message.text = "button2を押したみたいです";
      break;
    case e.currentTarget.button3 :
      message.text = "この感触はbutton3を押した感触!!";
      break;
    case e.currentTarget :
      //ドラッグ解除
      e.currentTarget.stopDrag();
      //イベント処理を外す
      e.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,onUp);
      message.text = "windowのドラッグ終了";
  }
}

//イベントを関連付ける
window.addEventListener(MouseEvent.MOUSE_DOWN,onDown);
window.addEventListener(MouseEvent.MOUSE_UP,onUp);

上のでも下のでもOK

//window上でマウスボタンを押した時に実行する関数
function window_onDown(e:MouseEvent) {
  if (e.target==e.currentTarget) {
    //イベント発生対象と,イベント通知対象(window)が
    //等しければドラッグ開始
    e.currentTarget.startDrag();
    message.text = "windowをドラッグ開始";
    //ボタンを離したときと,画面外までドラッグしたときに関数を実行
    e.currentTarget.addEventListener(MouseEvent.MOUSE_UP,window_onUp);
    e.currentTarget.addEventListener(MouseEvent.MOUSE_OUT,window_onUp);
  }
}
//window上でマウスボタンを離した時に実行する関数
function window_onUp(e:MouseEvent) {
  if (e.target==e.currentTarget) {
    //ドラッグ解除
    e.currentTarget.stopDrag();
    //イベント処理を外す
    e.currentTarget.removeEventListener(MouseEvent.MOUSE_UP,window_onUp);
    e.currentTarget.removeEventListener(MouseEvent.MOUSE_OUT,window_onUp);
    message.text = "windowのドラッグ終了";
  }
}
//ボタン上をクリックしたときの処理
function button_onClick(e:MouseEvent){
  message.text = e.target.name + "をクリックしました";
}

//イベントを関連付ける
window.addEventListener(MouseEvent.MOUSE_DOWN,window_onDown);
window.button1.addEventListener(MouseEvent.CLICK,button_onClick);
window.button2.addEventListener(MouseEvent.CLICK,button_onClick);
window.button3.addEventListener(MouseEvent.CLICK,button_onClick);
stopPropagation();
window MCの中のbutton1をクリックした場合に、子供のイベントと同時に親も実行されてしまう。
そんなときにはstopPropagation()を使って、イベントフローを止める


//window上でマウスボタンを押した時に実行する関数
function window_onDown(e:MouseEvent) {
  trace("ウィンドウ" + e.target.name + "を押しました");
}
//ボタン上をクリックしたときの処理
function button_onDown(e:MouseEvent){
  trace("ボタン" + e.target.name + "を押しました");
  //ここでイベントフローをストップ
  e. stopPropagation();
}
//イベントを関連付ける
window.addEventListener(MouseEvent.MOUSE_DOWN,window_onDown);
window.button1.addEventListener(MouseEvent.MOUSE_DOWN,button_onDown);