2009-05-08 4 views
0

Je me demande s'il est possible de trier/capturer l'état d'un film swf sur une période de temps et de le sauvegarder en tant que jpgs sur le serveur?Exporter une séquence d'animation à partir de Flash en JPEG

AS3 a la nouvelle classe com.adobe.images.JPGEncoder qui semble faire le travail, mais puis-je capturer une séquence? L'espoir serait que je pourrais le remettre ensemble comme une vidéo ou une animation.

Existe-t-il d'autres moyens de coder swf en vidéo par programme?

Répondre

1

J'ai fait une "capture d'écran" avant d'utiliser le JPGEncoder, donc je pense que vous devriez être capable de capturer l'écran sur l'événement ENTER_FRAME. Cela peut ne pas fonctionner car l'encodage JPG n'est pas super rapide.

C'est comme ça que je m'y prendrais. À titre de référence, voici un code qui fait cela (pour une capture d'écran unique):

var fileReference:FileReference = new FileReference(); 

// Capture the BitmapData of the stage for example 
var captureMovieClip:DisplayObjectContainer = stage; 

var stage_snapshot:BitmapData = new BitmapData(captureMovieClip.width, captureMovieClip.height); 
stage_snapshot.draw(captureMovieClip); 

// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray 
var encoded_jpg:JPGEncoder = new JPGEncoder(100); 
var jpg_binary:ByteArray = encoded_jpg.encode(stage_snapshot); 

// save 
fileReference.save(jpg_binary, "screenshot.jpg"); 

Vous pouvez probablement étendre à être appelé dans votre gestionnaire d'événements ENTER_FRAME, puis enregistrez le fichier à différents noms de fichiers. Aussi, au lieu de la scène, vous pouvez utiliser un objet d'affichage différent. Je ne sais pas à quelle vitesse cela va fonctionner, vous devrez peut-être baisser la fréquence d'images afin que l'ENTER_FRAME ne soit pas autant appelé, mais vous perdrez de la qualité dans vos rendus JPG. En outre, en réduisant la qualité de la ligne: new JPGEncoder(100) de 100 à une valeur inférieure peut aider avec les tailles de fichier des fichiers jpeg (mais peut entraîner ou non un surcroît de compression).

Questions connexes