繁体   English   中英

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

[英]AS3: How to resize an External Loaded SWF?

我正在尝试使用以下代码导入外部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;

}

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

请尝试使用Event.INIT 尽管事件发生的顺序是固定的,但Event.COMPLETE有一些可用,而其他一些则可用,这表明在后面的事件中一切皆有可能,但事实并非如此。

根据评论,我挖了一个旧链接来解释这个问题。

Event.COMPLETE非常相似的事件是Event.INIT当外部资产准备好使用时 ,无论是否已完全下载,都会触发该事件。 例如,在下载整个文件之前,可能已经准备好显示外部SWF的很少几 ,因此您可能希望对这些帧进行某些操作,同时还要下载电影的其余部分。 另一方面,某些文件可能已完全下载,但尚未初始化,因为初始化可能会在文件下载过程完成后花费一两秒钟 ,因此您可能要等待此文件准备就绪才能使用尝试使用该资产。

我知道init事件的文档怎么说:

初始化事件始终在完成事件之前。

所以一切都应该在最后触发的事件中可用,对吧? 根据经验,情况并非如此。 一次又一次地将一个事件更改为另一个事件,解决了与该问题中给出的事件始终相似的问题。

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

尝试在完成加载后尝试检索图像的宽度和高度时,通常使用Event.INIT 当文件完成加载时,此类属性不会立即可用,因此尝试使用Event.COMPLETE检索这些属性失败,必须改用Event.INIT

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

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

我找到了一个对我有用的解决方案,方法是将已加载的影片放置在容器中,然后调整容器本身的大小,而不是调整加载器的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM