[Embed(source="asset.swf")] 使用其中的所有资

系统 1398 0

AS3中 ,我们可以使用

    [Embed(source="asset.swf", symbol="symbol")]

private var symbolClass:Class;



var symbol:MovieClip = new symbolClass();


  

从艺术中嵌入一个符号 的SWF 在什么可能是一个代码构建 的SWF 这是伟大的,但如果你要嵌入整个 SWF

    [Embed(source="asset.swf")]

private var assetClass:Class;



var asset:MovieClip = new assetClass();


  

看起来像它应该做的伎俩,但你不能在资产中获得的任何信息。 这是一个真正的痛苦,因为这是非常令人费解的原因。 我想起了解决这个问题,在过去的工作,并愉快地设法挖掘一个长期被遗忘的宝藏在我的代码库,我想我会分享(已经迅速重构它以使用AS3-信号,自然)。

    package com.alecmce.util

{

	import org.osflash.signals.Signal;



	import mx.core.MovieClipAsset;



	import flash.display.Loader;

	import flash.display.LoaderInfo;

	import flash.display.MovieClip;

	import flash.events.Event;



	public class UnpackEmbed

	{

		private var _ready:Signal;



		private var _asset:MovieClipAsset;

		private var _content:MovieClip;



		public function UnpackEmbed(assetClass:Class)

		{

			_asset = new assetClass();

			_ready = new Signal(UnpackEmbed);



			var loader:Loader = Loader(_asset.getChildAt(0));

			var info:LoaderInfo = loader.contentLoaderInfo;

			info.addEventListener(Event.COMPLETE, onLoadComplete);

		}



		private function onLoadComplete(event:Event):void

		{

			var info:LoaderInfo = LoaderInfo(event.target);

			info.removeEventListener(Event.COMPLETE, onLoadComplete);



			_content = MovieClip(info.loader.content);

			_ready.dispatch(this);

		}



		public function get content():MovieClip

		{

			return _content;

		}



		public function get ready():Signal

		{

			return _ready;

		}



		public function get asset():MovieClipAsset

		{

			return _asset;

		}

	}

}


  

当您嵌入的SWF以这种方式,然后实例化它,闪存莫名其妙密谋建立一个 MovieClipAsset 装载机 内,这将是'加载'已嵌入的内容。 内容不是立即可用(也可能是有时候,我也遇到过的情况下它不是),所以你必须等待 Event.COMPLETE 被解雇之前,您可以访问它。 此类公开,通知您当内容准备就绪的信号。 它可能可以更严格,例如,包括 在isComplete 标志,但它提供我的目的,以下面的方式使用时:

    [Embed(source="asset.swf")]

private var assetClass:Class;



asset = new UnpackEmbed(assetClass);

asset.ready.addOnce(onAssetReady);



private function onAssetReady(asset:UnpackEmbed):void

{

	// now we can access the asset.content!

}
  

[Embed(source="asset.swf")] 使用其中的所有资源


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论