这可能是一个简单的问题,但我正在尝试访问我加载的外部swf文件中的按钮。问题是我每次尝试访问此按钮时都会收到错误消息,说明它是空的!
为什么会发生这种情况?我尝试搜索类似的帖子,我确实找到了一些,但这个问题仍然存在
这是我的代码:
public class DocumentClass extends Sprite
{
public var loader:Loader;
public var swfFile:URLRequest;
public var container:MovieClip;
public function DocumentClass()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
loader = new Loader();
swfFile = new URLRequest("swfs/TestScreen.swf");
loader.load(swfFile);
addChild(loader);
button.addEventListener( MouseEvent.CLICK, onClickReturnMainMenu ); // PROBLEM HERE
}
private function onClickReturnMainMenu( event:MouseEvent ):void
{
trace("TEST-TEST");
}
谢谢= D
编辑:这里是已编辑的代码
public class DocumentClass extends Sprite
{
public var loader:Loader;
public var swfFile:URLRequest;
public var container:MovieClip;
public function DocumentClass()
{
super();
// support autoOrients
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
loader = new Loader();
swfFile = new URLRequest("swfs/TestScreen.swf");
loader.load(swfFile);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
}
private function onClickReturnMainMenu( event:MouseEvent ):void
{
trace("ASDSADSADSAD");
//dispatchEvent( new ButtonEvent( ButtonEvent.MAINMENU ) );
}
private function onLoadComplete(evt:Event):void
{
addChild(loader);
var button:SimpleButton = loader.content.button
button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu);
}
现在这应该可行,代码方面我觉得它是正确的。问题是装载机无法找到所需的按钮。加载的movieClip中确实有一个按钮,实例名称为“button”,我仔细检查了......有什么建议吗?
EDIT2 终于让它工作了,感谢这个http://www.kirupa.com/forum/showthread.php?301313-Accessing-MC-instances-inside-loaded-SWF基本上我只是一层太高了,这就是为什么我无法访问任何东西......太愚蠢了......现在至少它已经结束了。感谢帮助人员= D
答案 0 :(得分:3)
你这里有2个问题......
首先需要向Event.COMPLETE
添加loader.contentLoaderInfo
侦听器:
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
然后你需要创建一个事件处理程序:
protected function onLoadComplete(evt:Event):void
{
var button:SimpleButton = loader.content.button;
button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu);
}
如果您的按钮位于已加载影片的根目录中,并且实例名称为“button”,则应该为您执行此操作。