码迷,mamicode.com
首页 > 其他好文 > 详细

Flex 4 获取SWFLoader嵌入的SWF实例

时间:2015-03-13 14:35:03      阅读:435      评论:0      收藏:0      [点我收藏+]

标签:嵌入   swfloader   swf   

当SWFLoader外部加载SWF时一切都很简单,可以直接通过SWFLoader实例的content属性获取加载的SWF相关的主类Sprite/MovieClip实例。


<s:SWFLoader id="swfLoader" source="@Embed(source=‘assets/xxx.swf‘)" />

但当SWFLoader如上所示,source属性使用@Embed标签嵌入swf时,该SWFLoader的content就不再是swf本身所代表的Sprite或MovieClip了,而是一个MovieClipLoaderAsset类的子类实例,源代码如下

package xxx.xxx
{
import mx.core.MovieClipLoaderAsset;
import flash.utils.ByteArray;

public class main__embed_mxml_assets_xxx_swf_666811031 extends MovieClipLoaderAsset
{
	public function main__embed_mxml_assets_xxx_swf_666811031()
	{
		super();
		initialWidth=11000/20;
		initialHeight=8000/20;
	}
	private static var bytes:ByteArray = null;

	override public function get movieClipData():ByteArray
	{
		if (bytes == null)
		{
			bytes = ByteArray( new dataClass() );
		}
		return bytes;
	}

	[Embed(_resolvedSource=‘X:/xxx/xxx.swf(swf在硬盘上的绝对路径)‘, 
	mimeType=‘application/octet-stream‘)]
	public var dataClass:Class;
}
}

由上可见,该MovieClipLoaderAsset子类实例有一个名为dataClass的Class类型的public变量,使用Embed标签嵌入了swf(作为二进制数据ByteArray)

[Embed(_resolvedSource=‘X:/xxx/xxx.swf(swf在硬盘上的绝对路径)‘, 
mimeType=‘application/octet-stream‘)]
public var dataClass:Class;

可以通过名为movieClipData的getter获取swf的ByteArray。


另外MovieClipLoaderAsset类实例还有一个私有的loader:Loader变量

private var loader:Loader

该loader加载了嵌入的swf,并作为MovieClipLoaderAsset子类实例的唯一子项添加到了其显示列表中

也就是说swfLoader.content.getChildAt(0) as Loader,即可得到该私有变量loader,

这个loader.content才是嵌入swf相关的主类Sprite/MovieClip



Flex 4 获取SWFLoader嵌入的SWF实例

标签:嵌入   swfloader   swf   

原文地址:http://cstar.blog.51cto.com/2923639/1620040

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!