我想要从导入的类调用stage.stagewidth / stage.stagehieght。 这是我的代码希望任何人都可以解决它或告诉我该怎么做
package
{
import flash.display.MovieClip;
import multyLoader;
public class program extends MovieClip
{
private var theLoader:multyLoader = new multyLoader();
public function program()
{
// constructor code-----------------
theLoader.My_Loader(mc_loaderHolder,myXML.IMAGE[1].@URL);
}
}
}
和multyLoader.as文件代码是
package
{
public class multyLoader extends MovieClip
{
public function multyLoader()
{
trace(any);
}
public function My_Loader(loading_holder,myLoaderURL:String)
{
// pla pla code
loading_holder.x = (stage.stageWidth - loading_holder.width) / 2; // get Error #1009 or stage not found.
loading_holder.y = (stage.stageHeight - loading_holder.height) / 2; // get Error
}
}
}
答案 0 :(得分:1)
如果要从multyLoader
实例引用舞台,则需要首先在显示列表中。最安全的方法是监听ADDED_TO_STAGE
事件,并仅在事件触发后引用阶段。
public function My_Loader(loading_holder, myLoaderURL:String){
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
protected function onAddedToStage(e:Event){
removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
loading_holder.x = (stage.stageWidth - loading_holder.width) / 2;
// etc...
}
您还可以确保在确定My_Loader
已添加到显示列表后才调用theLoader
功能。它并不像看起来那么简单。
如果您不希望theLoader
因任何原因出现在显示列表中,则第三个选项是从父类传递theLoader
对该阶段的引用。您可以将其作为参数添加到My_Loader
函数中。
public function My_Loader(loading_holder, myLoaderURL:String, myStage:Stage){
loading_holder.x = (myStage.stageWidth - loading_holder.width) / 2;
// etc...
}
从父类调用它:
theLoader.My_Loader(mc_loaderHolder, myXML.IMAGE[1].@URL, this.stage);