IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Composant destination de Data Binding


Sujet :

ActionScript 3

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut Composant destination de Data Binding
    Bonjour,

    Je suis en train de développer un lecteur de flux de caméra, et j'ai un petit pb de data binding. J'ai 2 composants, un lecteur de flux MJPG et une image "améliorée" (code en fin de post pour la lisibilité) :

    • Le lecteur change sa propriété lastImage chaque fois qu'une nouvelle image est disponible, et génère un événement ReaderEvent.
    • Mon image "améliorée" dérive de mx:image, elle utilise un Loader pour précharger et décoder l'image générée par le reader et éviter ainsi le clignottement.


    Ce que je voudrais pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <my:CameraReader id="reader" host="..." port="..."/>
    <my:EnhancedImage id="img" source={reader.lastImage} />
    img fournit un setter (voir plus bas le code) qui va se charger de donner les data au Loader au lieu de les envoyer directement à l'image.

    Seulement voilà... ça ne fonctionne pas. Je n'ai rien qui s'affiche, il semble que le dataBinding ne se fasse pas. Si par contre je n'override pas le setter de img.source, mais que je crée une nouvelle property publique dataSource (code du setter identique, juste remplacer source par dataSource), ça fonctionne. Bien sur, si j'intercepte le ReaderEvent (cf code) et que je fais le chargement à la main, ça fonctionne.

    Quelqu'un a une idée ?


    ---------------
    Reader.as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [Bindable]
    public var lastImage: ByteArray = null;
     
    ....
     
    var event: ReaderEvent = new ReaderEvent( image );
    lastImage = image;
    dispatchEvent( event );
    EnhancedImage.mxml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <mx:Image ...>
        <mx:Script>
            <![CDATA[
                private var _loader: Loader = new Loader();
                override public function set source( dataSource: Object ):void
                {                
                    if( null != dataSource && dataSource is ByteArray )
                    {
                        var array: ByteArray = dataSource as ByteArray;
                        if( array.bytesAvailable > 0 )
                            _loader.loadBytes( array );    
                    }
                }
     
                private function onBytesLoaded( e:Event ): void
                {
                    this.data = _loader.content;
                }
            ...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 147
    Par défaut
    certainement parce qu'il manque qq infos pour le binding :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [Bindable]
    override public function get source():String
    {
              return super.source;
    }

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 147
    Par défaut
    oups c'était le GET, pour le SET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    override public function set source(value:Object):void
    {
     super.source = value;
    }
    en fait, dans ton code on ne sait pas ce que contient la source

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Citation Envoyé par bonnafb Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    override public function set source(value:Object):void
    {
     super.source = value;
    }
    en fait, dans ton code on ne sait pas ce que contient la source
    Justement, ce n'est pas ce que je veux faire. Ce que je veux, c'est que si la source est un ByteArray, au lieu de faire un super.source = source, je délègue le chargement à un Loader.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    override public function set source( value: Object ):void
    {                
        if( null != value && value is ByteArray )
        {
            var array: ByteArray = value as ByteArray;
            if( array.bytesAvailable > 0 )
                _loader.loadBytes( array );    
            }
        }
        else
           super.source = value;
    }
    Sauf que pour un mystère mystérieux, ça ne fonctionne pas. Il faudrait que je rajoute un getter déclaré [Bindable] ?

Discussions similaires

  1. Méthodes de data binding
    Par Arnaud_03 dans le forum Services Web
    Réponses: 4
    Dernier message: 16/07/2008, 16h50
  2. Bug composant TextBox avec Vista (Binding/Scrollbar)
    Par Anified dans le forum Windows Forms
    Réponses: 6
    Dernier message: 27/05/2008, 16h04
  3. Data Binding et DependencyProperty
    Par gege02 dans le forum C#
    Réponses: 1
    Dernier message: 22/06/2007, 10h36
  4. [VB.NET]data binding et bindingcontext dur a trouver
    Par thierry007 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/12/2006, 15h45
  5. [XML] XML Data Binding vers php
    Par noa dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/03/2006, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo