如何使预加载swf填充浏览器?

时间:2012-08-14 22:05:18

标签: html actionscript-3 flash preloader preload

让我稍微解释一下我的问题。

我正在创建一个Flash网站,我正在使用一个小的外部预加载器swf来加载主SWF。我已经能够让我的预加载器swf占用整个浏览器窗口但是只要它在主swf中加载它只显示它内置的正常尺寸。

我在主Flash应用程序中有一个调整大小监听器,一旦我改变浏览器的大小,主swf就会占用整个浏览器。但是我怎么能以这种方式开始呢?

- 我尝试过使用一个ENTER_FRAME处理程序,但这打破了我的一些动画。 - 我已经尝试在预加载器中设置我的加载器对象的宽度和高度,这似乎也不起作用。 - 我也尝试将ADDED_TO_STAGE监听器添加到加载器,但这似乎没有改变任何东西。 - 我也尝试将预加载器放在一个场景中,主应用程序放在另一个场景中,这样我只加载一个swf,但这似乎不起作用,我不喜欢这种预加载方法。

我无法在任何地方找到解决方案。有什么容易让我失踪吗?让我知道你们都在想什么。预加载器代码如下:

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

var request:URLRequest = new URLRequest("flashNew.swf");
var loader:Loader = new Loader();


loader.load(request);
this.addChild(loader);


function loadProgress(event:ProgressEvent):void
{
    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;
    var percentLoadedBar:Number = Math.round((event.bytesLoaded / event.bytesTotal) * 100);
    percentLoaded = Math.round(percentLoaded * 100);

    this.percentLoaded.text = String(uint(percentLoaded)) + "%";

    progressBar.width = percentLoadedBar * 3.36;
}

function loadComplete(event:Event):void
{
    //loader.content.height = stage.stageHeight;
    //loader.content.width = stage.stageWidth;
}

function setDimensions(event:Event):void
{
    loader.width = stage.stageWidth;
    loader.height = stage.stageHeight;
}

loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.contentLoaderInfo.addEventListener(Event.ADDED_TO_STAGE, setDimensions);

有没有办法可以通过javascript或其他方式进行更改?我在这里不知所措,我被困在这几个小时。任何帮助,将不胜感激。谢谢!

更新 这是我调整大小函数的代码。

function resizeListener(e:Event):void
{
    background_mc.width = stage.stageWidth;
    background_mc.height = stage.stageHeight;
    //The rest of the function is omitted. It is if's and else-if's that just reposition various elements.
    //That's really all this function does is re-position elements with the exception of the above code which resizes the background.
}

这是事件监听器调用。

stage.addEventListener(Event.RESIZE, resizeListener);

1 个答案:

答案 0 :(得分:0)

试试这个:

删除了这行代码:this.addChild(loader);

然后将您的loadComplete功能调整为:

function loadComplete(event:Event):void
{
    addChild(loader.content);
    loader.content.height = stage.stageHeight;
    loader.content.width = stage.stageWidth;
}