¿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…