2010-01-10 12 views

Respuesta

2

Las implementaciones de JavaScript y DOM de los navegadores web actuales realmente no tienen buenos mecanismos para hacer este tipo de cosas.

Su mejor opción es hacer que su AS3 devuelva un URI de protocolo de datos con una versión de la imagen codificada en base64. Los navegadores modernos (IE8 +, FF2 +, etc.) aceptarán un URI de DATOS como el SRC de una etiqueta IMG y representarán la imagen contenida en ellos.

http://en.wikipedia.org/wiki/Data_URI_scheme

Usted tendrá que tener un experto en AS3 explicar cómo convertir una matriz de bytes en una cadena codificado en base 64, pero no puede ser tan difícil.

+0

No funcionó en Alex

+0

De hecho, eso no funcionará en versiones anteriores del navegador. Sin usar un URI de datos, no hay otra manera de hacer esto con el propio DOM. – EricLaw

+2

Para el registro, la forma de hacerlo la conversión es: tome su DisplayObject (Sprite/MovieClip/lo que sea), conviértalo a BitmapData (myBitmapData.draw (mySprite);), conviértalo a un PNG usando AS3CoreLib de adobe (myByteArray = PNGEncoder.encode (myBitmapData);), convertir eso a Base64 usando el Base64Encoder de Flex (myBase64Encoder.encodeBytes (myByteArray);), luego exporte eso a alguna función de Javascript usando ExternalInterface. – Ender

4

Tome su DisplayObject (Sprite/MovieClip/lo que sea) y convertirlo en un BitmapData:

myBitmapData.draw(mySprite); 

convertir eso a un PNG usando Adobe AS3CoreLib

myByteArray = PNGEncoder.encode(myBitmapData); 

Convierte eso a base 64 usando Flex de Base64Encoder :

myBase64Encoder.encodeBytes(myByteArray); 

Luego export actionscript variables to Javascript usando ExternalInterface.

+0

después de más de 3 años ... ¡y alguien más encontró esta publicación muy útil! ¡Muchas gracias! ! –

Cuestiones relacionadas