함수 내에서 함수 호출 - Flash Actionscript 2.0
-
09-06-2019 - |
문제
Actionscript에 일부 XML을 로드한 후 함수를 호출하려고 하는데 해당 함수를 어떻게 호출하는지 궁금합니다.예:
//Function Declarations
function parentFunction()
{
function callMe()
{
textField.text = "lawl";
}
}
지금, "callMe()" 함수를 어떻게 호출하나요 onRelease 함수와 같이 코드의 다른 부분에 있습니까?
on(release)
{
callMe(); //doesn't work
parentFunction().callMe(); //doesn't work
parentFunction.callMe(); //doesn't work
}
ActionScript 2.0은 정말 이상합니다!어떤 아이디어가 있나요?
해결책
parentFunction 내부에서 callMe를 선언해야 합니까?나는 그렇게 가정합니다. 왜냐하면 그렇지 않으면 당신은 그냥 그렇게 할 것이기 때문입니다.
function parent () {} 함수 callme () {}
명확하게 말하면, 해당 함수가 존재할 범위를 제공하지 않는 한 함수는 다른 함수를 소유할 수 없습니다.
따라서 JavaScript에서는 프로토타입 객체를 사용하여 callMe 함수를 parentFunction이 반환한 객체의 메서드로 선언함으로써 이를 수행할 수 있습니다.
http://www.howtocreate.co.uk/tutorials/javascript/objects
ActionScript의 경우 Adobe 웹사이트에서 다음 문서를 읽어보세요.http://www.adobe.com/devnet/flex/articles/as_collections_03.html
편집하다:좀 더 읽어보면 여러분이 작업한 방식이 나타나며 실제로 callMe를 다음과 같이 선언하고 있습니다. 사적인 기능.전체를 구성해야 하는 이 기사를 참조하세요. 비공개/공개 자바스크립트 문제 훨씬 더 이해하기 쉽습니다.
다른 팁
나는 바보입니다.나는 "함수는 다른 함수를 소유할 수 없다"는 사실을 잊어버렸기 때문에 다른 방법을 찾아냈습니다.감사해요!
물론 함수는 다른 함수를 "소유"할 수 있습니다.이것은 ECMAScript입니다. 기억하세요.함수 내부에 변수를 선언하고 함수를 할당하면 됩니다.그런 다음 "call" 메서드를 사용하여 함수를 호출할 수 있습니다.
함수 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');
}
영어가 좋지 않아 죄송합니다. (메뉴-) 버튼에 대한 핸들러를 설정하고 Whitch는 MC에 있습니다.
스테이지의 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.name을 반환합니다.
편집하다:아, AS3용이지만 도움이 될 수도 있습니다!