访问加载的swf文件中的按钮?

时间:2011-12-28 15:53:45

标签: flash actionscript-3 actionscript flash-builder

这可能是一个简单的问题,但我正在尝试访问我加载的外部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

1 个答案:

答案 0 :(得分:3)

你这里有2个问题......

  1. 在尝试访问按钮之前,您没有等待swf加载。
  2. 您访问该按钮的方法不正确。
  3. 首先需要向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”,则应该为您执行此操作。