¿Que es Embed y como usarlo?
Embed: En traducción de ingles quiere decir “incrustar”, real mente es lo que hace al pie de la letra al compilar nuestro archivo SWF.
Que tipo de archivos podemos incluir o incrustar? Bien real mente cualquier archivo o formato empezando desde Fonts hasta mp3, Video, Xml o otro tipos de datos…

Ejemplo de uso manera 1:
… esta manera seria la mas correcta, esta opción es mas usada en Flex ya que si se usaría la manera nº2 os saldría error al compilar.
Archivo “EmbedObj.as”

 
package
{
	import flash.utils.ByteArray;
 
	//en la variable source asignamos la ruta hasta nuestro modelo 3D
	[Embed(source="3Dobj.DAE", mimeType="application/octet-stream")]
 
	public class EmbedObj extends ByteArray
	{
		public function EmbedObj():void
		{
			return;
		}
	}
}
 

Archivo “embed.as”

 
package {
 
	import flash.events.*;
	import flash.utils.ByteArray;
 
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.view.BasicView;
 
	//Configuración de nuestro SWF desde Clase AS3
	[SWF(width="500", height="400", backgroundColor="#ffffff", frameRate="60")]
 
	public class embed extends BasicView
	{
		//declaramos las variables
		private var collada:DAE;
		private var modelo:EmbedObj;
 
		public function embed():void
		{
			addEventListener(Event.ADDED_TO_STAGE, dm211_initStage);
			//____________________________________________________SET DEBUG CAMERA
			//interrumpimos el arranque básico de la clase BasicView y la reemplazamos con estos parámetros                         
			super(stage.stageWidth, stage.stageHeight, true, true, "Debug");
		}
 
		private function dm211_initStage(event:Event):void{
			removeEventListener(Event.ADDED_TO_STAGE, dm211_initStage);
			//____________________________________________________COLLADA CALL
			//invocamos nuestro modelo 3D
			var _loc:ByteArray = new EmbedObj();
			collada = new DAE( false );
			//cargamos el contenido Embed		
			collada.load( _loc );
			//añadimos el elemento en el Stage
			scene.addChild( collada );
			//____________________________________________________START RENDERING
			startRendering();
		}
	}
}
 

Resultado:

This movie requires Flash Player 10

Ejemplo de uso manera 2:
Aquí asignamos directamente la clase al Embed, en vez de crear un archivo para ello.
Archivo “embed.as”

 
package {
 
	import flash.events.*;
	import flash.utils.ByteArray;
 
	import org.papervision3d.objects.parsers.DAE;
	import org.papervision3d.view.BasicView;
 
	//Configuración de nuestro SWF desde Clase AS3
	[SWF(width="500", height="400", backgroundColor="#ffffff", frameRate="60")]
 
	public class embed extends BasicView
	{
		//declaramos las variables
		private var collada:DAE;
 
		//incluimos el Embed y le asignamos una Clase
		[Embed(source="3Dobj.DAE", mimeType="application/octet-stream")]
		private var modelo:Class;
 
		public function embed():void
		{
			addEventListener(Event.ADDED_TO_STAGE, dm211_initStage);
			//____________________________________________________SET DEBUG CAMERA
			//interrumpimos el arranque básico de la clase BasicView y la reemplazamos con estos parámetros                         
			super(stage.stageWidth, stage.stageHeight, true, true, "Debug");
		}
 
		private function dm211_initStage(event:Event):void{
			removeEventListener(Event.ADDED_TO_STAGE, dm211_initStage);
			//____________________________________________________COLLADA CALL
			//invocamos nuestro modelo 3D y cargamos la clase como ByteArray
			var _loc:ByteArray = new modelo() as ByteArray;
			collada = new DAE( false );
			//cargamos el contenido Embed		
			collada.load( _loc );
			//añadimos el elemento en el Stage
			scene.addChild( collada );
			//____________________________________________________START RENDERING
			startRendering();
		}
	}
}
 

Resultado:

This movie requires Flash Player 10

Conclusión: Gracias a Embed podemos incluir datos que no aparecerán con Decompiler, aunque el archivo final pese algo mas…