ActionScript 誰かが物凄い勢いで解答するスレ 9

このエントリーをはてなブックマークに追加
429Now_loading...774KB
>>428
そこは、最初はまる所だね。

リスナーとか、xml.onLoadとか、mc.onReleseとか
イベント用の関数内でscopeが変わってしまう。
そういう場合は、以下のようにインナーfunctionで処理する。

MovieClipは、_parentで上のscopeが拾えるけど、
クラスで親を呼ぶのは気持ち悪いので、下のように処理するのがお勧め。

class hoge {
 private var _hoge:String = "hogehoge";
 public function addMouseDown():Void {
  var lsn:Object = new Object();
  //親のscopeをここに格納
  var scope = this;
  lsn.onMouseDown = function(){
   //インナーfunctionを指定
   scope.hogeOnMouseDown();
  };
  Mouse.addListener(lsn);
 }
 public function hogeOnMouseDown():Void {
  //onMouseDownから呼ばれた関数で、classと同じscopeで書ける。
  trace(_hoge);
 }
}