1

XMLをActionscriptにロードした後に関数を呼び出そうとしていますが、その関数をどのように呼び出すのか疑問に思っています。例:

//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はとても奇抜です!何か案は?

4

5 に答える 5

2

parentFunction内でcallMeを宣言する必要がありますか?そうでなければあなたはただそうするだろうから

function parent(){} function callMe(){}

明確にするために、関数が存在するためのスコープを提供しない限り、関数は別の関数を所有できません。

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

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

ActionScriptについては、AdobeのWebサイトで次の記事を読んでください: http ://www.adobe.com/devnet/flex/articles/as_collections_03.html

編集:もう少し読んだ後、それはあなたが物事をしたように見えます、あなたは実際にcallMeをプライベート関数として宣言しています。この記事を参照してください。これにより、プライベート/パブリックJavaScriptの問題全体がより理解しやすくなります。

于 2008-09-02T20:49:29.013 に答える
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');
}
于 2008-11-13T04:43:02.350 に答える
0

私はアホです。「関数は別の関数を所有できない」ということをすべて忘れていたので、別の方法を考え出しました。ありがとう!

于 2008-09-02T21:29:33.083 に答える
0

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

関数 foo() { trace("foo");

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

bar.call();

}

フー();

于 2008-09-22T06:56:34.203 に答える
0

下手な英語で申し訳ありませんが、MC にある (Menu-)Buttons のハンドラーを設定します。

ステージ上の 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「ボタン」を含む) @ 最初のフレーム:

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

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

testbtn.name を返します

編集:ああ、それはAS3用ですが、役立つかもしれません!

于 2010-07-13T12:56:26.057 に答える