getDefinitionByName을 사용하여 문자열에서 Scene1 클래스의 객체를 인스턴스화하는 sceneLoader 함수가 있습니다. 그런 다음 다른 함수에서 Scene1의 함수 (sceneHandler)에 액세스하려고합니다.다른 함수의 클래스 인스턴스 액세스 - getDefinitionByName (AS3)
public class Main extends MovieClip{
private var sceneNumber:int = 1;
private var SceneRef:Class;
private var sceneString:String;
public function Main(){
sceneLoader();
responseHandler();
}
private function sceneLoader():void{
sceneString = "Scene" + int(sceneNumber);
SceneRef = getDefinitionByName(sceneString) as Class;
var scene = new SceneRef();
addChild(scene);
}
private function responseHandler():void{
scene.sceneHandler(); //Obviously this will not work
}
}
클래스 장면 l
public class Scene1 extends MovieClip{
public function sceneHandler():void{
//Do something
}
}
문제는 그 장면이 범위를 벗어나이다. 먼저 getDefinitionByName을 호출해야하므로 함수 외부에서 Scene1을 인스턴스화 할 수 없습니다. 나중에 장면을로드하는 기능을 유지하려고합니다. responseHandler에서 sceneHandler를 호출하려면 어떻게해야합니까?
편집 : 나는
public class Main extends MovieClip{
private var sceneNumber:int = 1;
private var SceneRef:Class;
private var sceneString:String;
public function Main(){
sceneLoader();
responseHandler();
}
private function sceneLoader():void{
addChild(getScene());//Does not work
}
private function responseHandler():void{
getScene().sceneHandler(); //Works now
}
private function getScene():Object{
sceneString = "Scene" + int(sceneNumber);
SceneRef = getDefinitionByName(sceneString) as Class;
var scene = new SceneRef();
//addChild(getScene());//This does work but doesn't suit my need
return scene;
}
}
가 지금은 무대에 개체를 추가 할 수 없습니다 시도했습니다. 오류가 발생합니다 :
Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject.