[英]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的很少几帧 ,因此您可能希望对这些帧进行某些操作,同时还要下载电影的其余部分。 另一方面,某些文件可能已完全下载,但尚未初始化,因为初始化可能会在文件下载过程完成后花费一两秒钟 ,因此您可能要等待此文件准备就绪才能使用尝试使用该资产。
初始化事件始终在完成事件之前。
所以一切都应该在最后触发的事件中可用,对吧? 根据经验,情况并非如此。 一次又一次地将一个事件更改为另一个事件,解决了与该问题中给出的事件始终相似的问题。
第一个链接也说明了这一点,与这个问题非常相关:
尝试在完成加载后尝试检索图像的宽度和高度时,通常使用
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.