2010-09-03 5 views
2

Comment copier ou dupliquer les bitmapdata à partir d'un composant mx: image?Copier bitmapData De mx: Image

J'ai besoin d'afficher la même image dans plusieurs écrans de mon application et je ne veux pas avoir à télécharger l'image plusieurs fois.

Je pourrais simplement utiliser une requête url pour télécharger l'image en tant que bitmap et la copier mais j'aime la façon dont vous pouvez simplement définir la source du composant d'image.

Répondre

5

Image étend SWFLoader qui a un content property qui contiendra l'objet Bitmap qui a été chargé. Attendez l'image à charger, jeter le contenu en Bitmap et lire son bitmapData

public function imageLoadCompleteHandler(e:Event):void 
{ 
    var bitmap:Bitmap = img.content as Bitmap; 
    if(bitmap == null) { 
     trace("loaded content is not an image"); 
     return; 
    } 
    bmpData = bitmap.bitmapData; 
    //hurray..! 
} 
+1

cool. sauf pour copier et coller les fins la deuxième ligne devrait lire J'ai eu des erreurs sur cette ligne essayant de lancer un bitmap comme une image – dubbeat

+0

@dubbeat oups, il devrait être 'Bitmap ', pas' Image'. Fixé. – Amarghosh

0

En fait, après avoir lu le message ci-dessus (et d'essayer des choses sur) Je pense que cela est faux. L'écouteur complet se déclenche sur ma deuxième image, donc je suppose qu'il le charge deux fois. Tant pis.

Je ne pouvais pas placer tout le document Flex, mais cela semblait fonctionner. J'ai ajouté cela à la balise Application: applicationComplete = "Run();"

Ce qui suit est enveloppé dans une balise mx: Script:

import mx.controls.Image; 
    private function Run():void 
    { 
     var i:Image = new Image(); 
     i.source = first.source; 
     addChild(i); 

    } 

Et ceci est juste une image de la balise de script:

<mx:Image x="12" y="125" source="e53c04a51d5992fb77ab1e20c45ddc9f.jpeg" id="first" /> 

J'ai essayé aussi ce après avoir réglé la source i :

first.source = null; 

Juste pour voir ce qui se passe, l'image que je garde sa source