- 2009年1月28日 21:01
- Progression
Progressionでタイムラインスタイルを使っていて、のaddCommand内で、たとえばこう書いたときの話。
やってることは、p1というシーンを表示したときにp1ページ内のボタンの処理を追加しているんですが、問題はここでの「function()」の使い方。
var p1:SceneObject =new SceneObject()
p1.name ="p1"
p1.onInit =function():void{
this.addCommand(
new AddChild(prog.container.p1Page),
function(){
p1Page._page.btn.addEventListener(MouseEvent.MOUSE_DOWN,function(){
prog.goto(new SceneId("/index/p2"))
//本当はここでif使って、条件によって飛ばすシーンを変えてる
}
);
}
p1.onGoto =function():void{
this.addCommand(
p1Page._page.btn.removeEventListener(MouseEvent.MOUSE_DOWN,arguments.callee);
);
}
addCommand内のfunctionは、無名関数っつーか、関数リテラルとして実行される、と考えると納得できる。こういうのはその場で1回実行される(言い方はわからないけど、クロージャっていうの?)と理解してるんだけど。
javascriptでいう関数リテラルはこんな感じ。↓
(function(v)
{alert(v)}("aho")
);
これだと、jsはすぐに実行されて、画面にアラートが出ます。
今日の発見
- addCommand内のfunctionは関数リテラル
- 無名関数でaddEventListenerしたときは、arguments.calleeでremoveできる
- Newer: 1/28 月刊インタラ塾#7リポート
- Older: ProgressionがFlashプレゼン資料作成に最適な5つのメリット
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://ryow.net/mt/mt-tb.cgi/395
- Listed below are links to weblogs that reference
- addCommand内でのfunctionについて雑感 from ryow.net Blog