Flash编程ActionScript3,从另一个类双重导入swf到主舞台

时间:2015-06-29 07:12:54

标签: actionscript-3 flash

让我解释一下我的情况: 我们有一个名为Main.fla的文件,它链接到MAIN类(它包含在MAIN.as文件中)。我还有一个带有User类的辅助User.as文件。

我设法从User.as类导入经典的swf按钮到我的舞台,但是当点击按钮时,我发现添加弹出窗口时遇到了麻烦。以下是代码:

MAIN.as

import flash.display.*;
import flash.net.*;
import flash.events.*;

import User;                          //Importing our User class

public class MAIN extends MovieClip
{


    public function MAIN() 
    {
            var k = new User();   
            k.logocons(this);      //This function is made on User class and 
                                   //it takes a stage:Object as definition
    }
}

User.as

import flash.display.*;
import flash.net.*;
import flash.events.*;

public class User extends MovieClip                                             
{

    var myLoader:Loader = new Loader();                                         


    public function User()
    {
      var url:URLRequest = new URLRequest("C:/Project/Button.swf");
      myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
      myLoader.load(url);
    }

    function swfLoaded(event:Event):void 
    {
        myLoader.x = 50;                                       
        myLoader.y = 50;                                        
    }

    public function logocons(stage:Object)                                  
    {                                                                           
        stage.stop();
        stage.addChild(myLoader);
    }
}

到目前为止这是正常的当我测试文件时Button完美运行

我现在想要的是当点击按钮显示在我的MAIN时。启动一个弹出窗口,该窗口也位于名为PopUp.swf的同一文件夹中。

我尝试了很多东西,但是我找不到如何从另一个类访问MAIN.stage。

提前致谢

1 个答案:

答案 0 :(得分:0)

User.as

import flash.display.*;
import flash.net.*;
import flash.events.*;
import fl.motion.MotionEvent;

public class User extends MovieClip                                             
{

    var myLoader:Loader = new Loader();                                         
    private var _mainStage:Stage;//MAIN.stage

    public function User()
    {
      var url:URLRequest = new URLRequest("C:/Project/Button.swf");
      myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded);
      myLoader.load(url);
    }

    function swfLoaded(event:Event):void 
    {
        myLoader.x = 50;                                       
        myLoader.y = 50;                                        
    }

    public function logocons(stage:Object)                                  
    {
        _mainSage = (stage as MovieClip).stage;// now you can use _mainStage  anywhere  on User class.                                                               
        stage.stop();
        stage.addChild(myLoader);
    }

    private function onButtonClick(e:MouseEvent){
         //ex.  _mainSage.addChild(popWindows);  
    }
}