解決済み

イベントに独自引数を渡したい。

  • 困ってます
  • 質問No.5371785
  • 閲覧数222
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

ACTIONSCRIPT3.0で、外部ファイルを読み込ませる処理を行っているのですが、読み込み完了時の関数に独自の引数を渡すことは不可能なのでしょうか?
var j:int = 100;
var myArray:Array;
for(var i=0;i<j;i++){
 myArray[i] = new Loader();
 myArray[i].load(new URLRequest(別の配列に入っている文字列のURL))
 myArray[i].contentLoaderInfo.addEventListener(Event.INIT,myfunc);
}
function myfunc(e){イベント発生時の処理}

のように、多数のイベント処理を書くときに配列のインデックスによって処理を分けたいのですが、上の例だとイベント発生時の関数であるmyfuncの引数は規定オブジェクトなので独自のものが渡せません。
いまは別にグローバルな配列を作成して処理をしているのですが、メモリ常駐になることや、オブジェクト指向として気に入らない状態です。
イベントが発生したオブジェクトの名前をキーにすることも考えましたが、どの道スマートではない。なにか方法はないものでしょうか?
また、言語仕様的にやむをえないのでしょうか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1

ベストアンサー率 83% (55/66)

Eventクラスを拡張すれば柔軟にできますが、簡単に渡したい場合は、
下記のようなクロージャを使用する方法があります。
-------------------------------------------
for (var i:int=0; i<j; i++) {
myArray[i] = new Loader();
myArray[i].load(new URLRequest(""))
myArray[i].contentLoaderInfo.addEventListener(Event.INIT,myfunc(i));
}

function myfunc(num:int):Function {
return function (event:Event):void {
trace(num);
}
-------------------------------------------

他の方法も参考までに。

■AS3:イベントリスナーの引数2-追加パラメータを渡す
http://blogs.yahoo.co.jp/k3_labs/4399737.html

■addEventListenerで一緒に引数を渡したい
http://blog.img8.com/archives/2008/04/003758.html
お礼コメント
stonebarr6

お礼率 100% (1/1)

ありがとうございます。
最初、「イベントリスナーになんで戻り値がいるのだ」と思ってしまいましたが、短い内容でくるくるまわって 大成功!!
なるほど~~ 裏だ!なんと裏技っぽい裏ワザだ!と思いました。
コンパイルエラーが出ないことを確認してから書き込んでいるので遅れて申し訳ありませんが、リンクともにとても参考になりました。
ありがとうございます。
投稿日時 - 2009-10-19 16:34:19
OKWAVE 20th Be MORE ありがとうをカタチに
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ