AS3从AN外部加载的swf加载外部swf - 访问儿童?

时间:2012-03-13 03:41:15

标签: actionscript-3 flash external parent-child

修改

2012年3月12日更新:这是使用AIR FOR ANDROID使用CS5.5完成的。我需要访问托管在Web服务器上的新 EXTERNALLY LOADED SWF 文件中的vars,我需要让手机上的APP访问它们。 我开始这是不可能的。

----------------------------------------------- -------------------------------

我的主舞台swf加载另一个:

SWF 1

var TheContent:Loader = new Loader();
    TheContent.load(new URLRequest("http://MyWebsite.com/swf2.swf"));

///在上面的 SWF 1 我需要知道什么代码可以看到是否加载了其他内容并在加载时控制它。但它很棘手,因为我正在从外部加载的swf加载外部内容。

以下是SWF 2中的代码

var TheMenu:Loader = new Loader();
TheMenu.load(new URLRequest("http://MyWebsite.com/MenuBar.png")); // you were missing a "

在第一个 SWF 1 中,我想知道MenuBar.png是否已加载以及如何控制它。例如,在 SWF 1 中,我可能会放置这样的代码......

    if(TheContent.MenuBar) /// IS LOADED? THEN...
    {
        MenuBar.alpha = .3;
        MenuBar.x = 33;
        etc...
    }

2 个答案:

答案 0 :(得分:0)

您可以将进度值保存到公共变量中,该公共变量可以通过swf进行访问。

SWF 2的以下代码:

import flash.display.Loader;
import flash.events.ProgressEvent;
import flash.net.URLRequest;

public class YourClassName
{
    /**This will get a progress number of your file**/
    public var fileProgress:Number = 0;
    /**This will get the file size**/
    public var fileTotalBytes:Number = 0;

    public function YourClassName()
    {           
        var TheMenu:Loader = new Loader();
        TheMenu.addEventListener(ProgressEvent.PROGRESS, onProgressHandler, false, 0, true);
        TheMenu.load(new URLRequest("http://MyWebsite.com/MenuBar.png"));

    }

    protected function onProgressHandler(event:ProgressEvent):void{
        fileProgress = event.bytesLoaded;
        fileTotalBytes = event.bytesTotal;
    }
}`

SWF 1的以下代码:

public function printStatus():void{

        //Returs file`s progress
        trace("Progresss: "+swf1.fileProgress);

        //Return file`s size
        trace("File size: "+swf1.fileTotalBytes);
    }

我希望这可以帮到你!

答案 1 :(得分:0)

第一点,似乎你的整个结构不是最好的方法。从我的立场出发,你的问题是:

(主电影)加载辅助(电影)然后(SECONDARY)电影加载其辅助(电影);

然后你想要第一部电影控制第二部电影,条件是第三部电影是%100并准备采取行动

这将从加载的Swf到主SWF

      MovieClip(parent.parent).ParentFunction();    // or the 3rd movie would be 
      MovieClip(parent.parent.parent).ParentFunction();

我在服务器上http://www.gamezslave.net/SampleAS3/

为您制作了一个文件

只需打开主电影。你会看到它根据你的需要将其他两部电影加载到彼此中,然后它会在第一部电影中播放动画,让你知道第三部电影已经完成下载。让我知道你是怎么走的,因为我花了15分钟把它放在一起。

zip中的

(包含所有源文件3x“SWF”和3x“html pages”);

感谢BJM Sydney