2010-02-16 10 views
0

J'ai 2 SWFLoaders comme ceci:Flex: Copie bitmapData d'une image chargée dans une autre SWFLoader

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/> 
<mx:SWFLoader id="ldr_target" scaleContent="true"/> 

private function imageLoaded():void{ 
    var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src); 
    ldr_target.source = bm; 
} 

Tout fonctionne ici comme prévu, sauf un peu petite chose:

je charge une image de taille 100x100 dans ldr_src (qui est 10x10). Le bitmap est copié dans ldr_target, mais avec des résultats inattendus. J'aurais pensé qu'une taille de 10x10 de l'image chargée serait copiée. Au lieu de cela, le bitmap de (0,0) à (10,10) de l'image chargée est copié sur la cible.

Quelle que soit la taille réelle de l'image, comment puis-je copier bitmapData de la taille réduite par le swfLoader?

Répondre

2

passer le image.content dans ImageSnapshot.captureBitmapData, alors assurez-vous que la largeur/hauteur du ldr_target est égal au src:

<mx:SWFLoader width="10" height="10" complete="imageLoaded()" id="ldr_src" source="img.jpg" scaleContent="true"/> 
<mx:SWFLoader width="10" height="10" id="ldr_target" scaleContent="true"/> 

private function imageLoaded():void 
{ 
    var bm:Bitmap = new Bitmap(ImageSnapshot.captureBitmapData(ldr_src.content)); 
    ldr_target.source = bm; 
}   

Lance

+0

Merci beaucoup pour la réponse, vous avez sauvé ma journée !! :) – Yeti

+0

agréable, bon à entendre! –

0

Je tentais de faire quelque chose de similaire, mais avec une vidéo source plutôt qu'une image. Travaillé comme un charme, merci. (Pour une raison quelconque la « ImageSnapshot » classe est un secret très bien gardé chez Adobe.)

0

Vous pouvez également utiliser la méthode BitmapData.draw pour obtenir un aperçu d'un DisplayObject qui implémente IBitmapDrawable