AS3:如何调整外部加载的SWF的大小?

时间:2015-04-27 22:23:22

标签: actionscript-3 flash

我尝试使用以下代码导入外部SWF:

var r:URLRequest = new URLRequest("movie.swf");
var imageLoader:Loader = new Loader(); 

imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);

imageLoader.load(r);
addChild(imageLoader);

function onLoadComplete(e:Event):void
{
    imageLoader.width  = 100;
    imageLoader.height = 75;

}

尝试调整大小时,外部电影会消失。我哪里错了?

3 个答案:

答案 0 :(得分:1)

请尝试使用Event.INITEvent.COMPLETE中有些东西可用,而另一些东西可用,尽管它们的出现顺序是固定的,这表明在后一种情况下一切皆有可能,但事实并非如此。

As per comment, I dug out an old link explaining the matter.

  

Event.COMPLETE非常相似的事件是Event.INIT,当外部资产可以使用时触发,无论是否完全下载。例如,在下载整个文件之前,外部SWF的极少数帧可能已准备好显示,因此您可能希望对这些帧执行某些操作,而您希望将其余的电影用于下载。另一方面,某些文件可能已完全下载但尚未初始化,因为在文件下载过程完成后初始化可能需要一两秒,因此您可能希望等待此在尝试使用该资产之前准备好使用该文件。

我知道what the documentation of the init事件说:

  

init事件总是在complete事件之前。

所以在最后发生的事件中一切都应该可用,对吧? 根据经验并非如此。一次又一次地将一个事件改变为另一个事件解决了总是与此问题中给出的问题类似的问题。

第一个链接也说明了这一点,与这个问题非常相关:

  尝试在图像加载完成后检索图像的宽度和高度时,通常会使用

Event.INIT。文件加载完成后,此属性不会立即可用,因此尝试使用Event.COMPLETE检索这些属性失败,必须使用Event.INIT

答案 1 :(得分:0)

使用scaleY和scaleY尝试代替宽度和高度:

imageLoader.scaleX  = 0.5;   // 50%
imageLoader.scaleY  = 0.3;   // 30%

答案 2 :(得分:0)

我找到了一个解决方案,通过将加载的影片放在容器中并调整容器本身大小而不是调整加载器大小来为我工作。