Frage

Ich versuche, eine Funktion aufzurufen, nachdem ich XML in Actionscript geladen habe, und frage mich nur, wie ich diese Funktion aufrufe.Beispiel:

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

Jetzt, Wie rufe ich die Funktion „callMe()“ auf? in einem anderen Teil des Codes, wie einer onRelease-Funktion?

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

ActionScript 2.0 ist einfach so seltsam!Irgendwelche Ideen?

War es hilfreich?

Lösung

Sind Sie gezwungen, callMe innerhalb von parentFunction zu deklarieren?Ich gehe davon aus, denn sonst würde man es einfach tun

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

Um es klar auszudrücken: Eine Funktion kann keine andere Funktion besitzen, es sei denn, Sie geben dieser Funktion einen Spielraum, in dem sie leben kann.

In JavaScript würden Sie dies tun, indem Sie das Prototypobjekt verwenden, um die callMe-Funktion als Methode des Objekts zu deklarieren, das parentFunction zurückgegeben hat.

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

Für ActionScript lesen Sie diesen Artikel auf der Adobe-Website:http://www.adobe.com/devnet/flex/articles/as_collections_03.html

BEARBEITEN:Nach etwas mehr Lektüre sieht es so aus, als hätten Sie die Dinge so gemacht, dass Sie callMe tatsächlich als a deklarieren Privat Funktion.Sehen Sie sich diesen Artikel an, der das Ganze abrunden sollte privates/öffentliches Javascript-Problem viel verständlicher.

Andere Tipps

Ich bin ein Idiot.Ich habe die ganze Sache „Eine Funktion kann keine andere Funktion besitzen“ vergessen, also habe ich mir einen anderen Weg ausgedacht, es zu tun.Danke!

Natürlich kann eine Funktion eine andere Funktion „besitzen“.Das ist ECMAScript, denken Sie daran.Deklarieren Sie einfach eine Variable in Ihrer Funktion und weisen Sie ihr eine Funktion zu.Anschließend können Sie Ihre Funktion mithilfe der Methode „call“ aufrufen.

Funktion foo() { trace("foo");

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

bar.call();

}

foo();

//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');
}

Sorry für schlechtes Englisch, Setzen Sie einen Handler für (Menü-)Buttons, die sich in einem MC befinden.

MC „Buttons“ auf der Bühne (mit 3 „testbtn“ darin) @ erster Frame:

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);
}

Bühne (mit MC „Buttons“ darin) @ erster Frame:

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

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

gibt den testbtn.name zurück

Bearbeiten:Oh, es ist für AS3, aber vielleicht hilft es!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top