zoukankan      html  css  js  c++  java
  • [Embed(source="asset.swf")] 使用其中的所有资源

    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!
    }
  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/zhepama/p/3467203.html
Copyright © 2011-2022 走看看