2011-10-11 1 views
1

J'ai un problème lorsque j'essaie de convertir un clip dans un bitmap. Tout fonctionne bien, mais certains attributs ne sont pas dans le nouveau bitmap. Par exemple, si j'ai un clip et que je le retourne (mc.scaleX * = -1) et que je le convertis en bitmap, il ne le retourne pas.Problème lors de la création d'un bitmap à partir d'un clip dans AS3

import flash.geom.Matrix; 
import flash.display.BitmapData; 
import flash.display.Bitmap; 

var box1:Box = new Box(); 
box1.x = 100; 
box1.y = 20; 
addChild(box1); 
box1.scaleX *= -1; 

var box2:Box = new Box(); 
box2.x = 300; 
box2.y = 20; 
addChild(box2); 

var matrix:Matrix = new Matrix(1, 0, 0, 1, (box1.width/2), (box1.height/2)); 

var bitmapData:BitmapData = new BitmapData(box1.width, box1.height, true, 0xFFFFFF); 
bitmapData.draw(box1, matrix, null, null, null, true); 


var bitmap:Bitmap = new Bitmap(bitmapData); 
addChild(bitmap); 
bitmap.x = 400; 
bitmap.y = 300; 

Si vous pouvez vérifier cet exemple simple, vous verrez ce que je veux dire, le « bitmap » devrait être retourner ce n'est pas.

Merci pour votre aide.

Répondre

1

Vous mieux obtenir la matrice du MovieClip que vous souhaitez transformer et utiliser des méthodes de la matrice sur elle, comme;

var myMatrix:Matrix = myDisplayObject.transform.matrix; 
myMatrix.scale(1,-1); 
myDisplayObject.transform.matrix = myMatrix; 

var bitmapData:BitmapData = new BitmapData(box1.width, box1.height, true, 0xFFFFFF); 
bitmapData.draw(box1, myMatrix, null, null, null, true); 

Cette méthode est facilitée car la rotation et la mise à l'échelle peuvent être complexes à définir sur la matrice.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6

0

Aucune des transformations que vous appliquez à l'objet DisplayObject lui-même ne sera respectée lorsque vous l'appliquerez à draw(). Si vous voulez le mettre à l'échelle ou le traduire, vous devez le faire dans la matrice de transformation que vous fournissez à l'appel draw.

Dans ce cas, la modification de votre initialisation de la matrice à cela pourrait faire l'affaire:

var matrix:Matrix = new Matrix(1, 0, 0, 1, -(box1.width/2), (box1.height/2)); 
Questions connexes