0
我有一個函數sceneLoader,它將使用getDefinitionByName從一個字符串實例化類Scene1的一個對象。然後我想從另一個函數訪問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
}
}
類場景1
public class Scene1 extends MovieClip{
public function sceneHandler():void{
//Do something
}
}
的問題是,場景超出範圍。我不能在函數外實例化Scene1,因爲我需要先調用getDefinitionByName。我也想保留稍後加載場景的功能。 如何從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.