2010-02-20 3 views
1

J'ai une application main.mxml qui présente mon application, elle contient un bouton "parcourir et télécharger". Et contient une image pour voir les utilisateurs image envoyée comme ceci:Comment mettre à jour dynamiquement une image à l'aide de la liaison de données?

<mx:Application 
<mx:Script> 
    <![CDATA[ 

    import model.myModel; 
    import control.myControl; 

    // Create data model 
    public var model:myModel = new myModel(); 
    //[Bindable] 
    //private var scld_img:Bitmap; 

    // Create control 
    public var mycontrol:myControl = new myControl(mymodel); 

</mx:Script> 

<!-- Upload and view --> 
<mx:Canvas id="upload" label="1: Upload Image"> 

    <mx:VBox> 
    <mx:HBox> 

    <mx:Label text="Upload an image: "/> 
    <mx:Button id="btn" 
     label="Browse and preview..." 
     click="mycontrol.browseAndUpload();" 
     buttonMode="true" 
     useHandCursor="true"/> 

    </mx:HBox> 


<mx:Image id="mximg_upld" 
    verticalCenter="0" 
    horizontalCenter="0" 
    source="mymodel.img_scld_bm"/> 

</mx:VBox> 
</mx:Canvas> 
...... 

Dans ma myModel classe I ont une img_scld_bm que la fonction browseAndUpload() tire après le redimensionnant.

Mon intention est que mon mx:Image affiche l'image. Comme indiqué ici, j'affecte l'image source="mymodel.img_scld_bm", cela finit par montrer une icône d'image cassée.

J'ai également essayé la liaison de données, où dans ma classe myModel j'ai [Bindable] var img_scld_bm. Et puis essayé de mettre mon mx:Image source="{myModel.img_scld_bm}" .. qui n'a pas l'air de faire quoi que ce soit non plus. Tout cela compile bien, pas d'avertissement. Je pense que dans ce cas, je ne définis pas un événement trigger ou propertyChange pour mettre à jour la liaison?

Quelqu'un peut-il m'aider à comprendre, ou fournir un exemple de comment lier correctement une source mx:Image à un bitmap ??

Répondre

0

À partir du code que vous avez donné, il semble que vous devez faire deux choses:

  1. Wrap la source avec des accolades.

  2. Définissez la propriété img_scld_bm dans la classe de modèle. Les liaisons ne s'exécuteront que si vous définissez la propriété; il semble que vous dessinez dans le img_scld_bm qui existe actuellement, mais cela ne provoquera pas la mise à jour de l'image.

Convertir ceci:

<mx:Image id="mximg_upld" verticalCenter="0" horizontalCenter="0" source="mymodel.img_scld_bm"/>

à ceci:

<mx:Image id="mximg_upld" verticalCenter="0" horizontalCenter="0" source="{mymodel.img_scld_bm}"/>

Alors chaque fois que vous apporter des modifications au img_scld_bm dans le modèle, la remise à zéro image.source.

Est-ce que cela fonctionne?

Questions connexes