2008-09-02 23 views
1

XMLをActionscriptにロードした後に関数を呼び出そうとしていますが、その関数をどのように呼び出すのか不思議です。例:今関数内の関数呼び出し - Flash Actionscript 2.0

//Function Declarations 
function parentFunction() 
{ 
    function callMe() 
    { 
    textField.text = "lawl"; 
    } 
} 

はどのように私はonRelease関数のように、コードの異なる部分で「callMe()」関数を呼び出すのですか?

on(release) 
{ 
callMe(); //doesn't work 
parentFunction().callMe(); //doesn't work 
parentFunction.callMe(); //doesn't work 
} 

ActionScript 2.0はうんざりです。何か案は?

答えて

2

callMeをparentFunctionの内側に宣言する必要がありますか?私は、そうでない場合は、あなただけ明確にするため

機能の親(){} 関数callMeに(){}

を行うだろうので、あなたがその関数のいくつかのスコープを提供しない限り、関数が別の関数を所有することはできませんので、仮定します

JavaScriptでは、prototypeオブジェクトを使用してcallMe関数をparentFunctionが返すオブジェクトのメソッドとして宣言することでこれを行います。 ActionScriptに

http://www.howtocreate.co.uk/tutorials/javascript/objects

、アドビシステムズ社のウェブサイトでこの記事を読む: http://www.adobe.com/devnet/flex/articles/as_collections_03.html

EDIT:いくつかのより多くの読みになった後、それはあなたが物事を行った方法を表示され、あなたが実際にプライベート関数としてcallMeを宣言しているが。この記事を参照して、private/public javascript issue全体をより理解しやすくする必要があります。

0

私はばかです。私は全体の「機能は別の機能を所有できません」ということを忘れてしまったので、別の方法でそれを実現しました。ありがとう!

0

もちろん、関数は別の関数を「所有する」ことができます。これはECMAScriptが覚えています。関数内に変数を宣言して関数に代入するだけです。その後、 "call"メソッドを使用して関数を呼び出すことができます。

function foo() { trace( "foo");

var bar = function() 
{ 
    trace("bar"); 
}; 

bar.call(); 

}

のfoo();悪い英語のため申し訳ありません

0
//v--- on the frame 
function callMe(){ 
textArea.text='lawl'; 
} 
//v---- for button 
on(release){ 
callMe(); 
} 

--- or ----- 

//CUSTOM!! 
//v---- on frame 
function callMe(say){ 
textArea.text=say; 
} 
//v--- for button 
on(release){ 
callMe('lawl'); 
} 
0

、 はMCに配置されているwhitch(メニュー - )ボタン、のハンドラを設定します。

ステージ上MC "ボタン"(その中の3 "testbtn" の)最初のフレーム@:

function SetMethod(Method:Function){ 
    //trace(Method.call()); 
    //or something like: 
    testbtn1.addEventListener(MouseEvent.CLICK, Method); 
    testbtn2.addEventListener(MouseEvent.CLICK, Method); 
    testbtn3.addEventListener(MouseEvent.CLICK, Method); 
} 

(その中のMC "Butttons" の)ステージの最初のフレーム@:

function TheMenuListener(evt:Event):void{ 
    trace(evt.target.name); 

} 
... 
Buttons.SetMethod(this.TheMenuListener); 

は、testbtnを返します。名前

編集:ああ、それはAS3用ですが、おそらく助けてください!

関連する問題