2010-09-01 1 views
0

Je dois utiliser le composant Button du panneau des composants de l'interface utilisateur dans l'environnement de développement intégré Flash, avec la propriété toggle définie sur true. Si je l'utilise avec un script de montage, cela fonctionne très bien.Comment réparer ce bug potentiel avec le composant Button dans Flash?

Si j'utilise dans une classe (une classe de document), la propriété sélectionnée est inversée (je deviens vrai quand il n'est pas basculé et vice versa).

Si vous définissez également la valeur false dans l'inspecteur des propriétés, définissez toggle sur true dans la classe de document. Si j'invalide, je bascule les traces vrai, mais la propriété sélectionnée trace toujours faux.

code Timeline est aussi simple que cela:

bold_b.addEventListener(MouseEvent.CLICK, onClick); 
function onClick(event:MouseEvent):void { 
    trace(event.currentTarget.selected); 
} 

classe de document est simple ainsi:

package 
{ 
    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class ButtonTester extends MovieClip 
    { 
     public function ButtonTester() 
     { 
      //in timeline works fine, in class it's the other way around 
      bold_b.addEventListener(MouseEvent.CLICK, onClick); 
      bold_b.toggle = true; 
      bold_b.invalidate('toggle',true); 
      bold_b.drawNow(); 
      stage.invalidate(); 
      trace('bold_b.toggle: ' + bold_b.toggle); 
      function onClick(event:MouseEvent):void { 
       trace(event.currentTarget.selected); 
      } 
     } 

    } 
} 

Actuellement, je suis avec Flash CS3. J'ai Flash Player 10 installé. Vous ne connaissez pas la version 'build' des composants, mais ils ont été écrits en 2007 sous Flash Player 9.0.28.0

Est-ce que quelqu'un sait comment contourner ce problème?

+0

veuillez joindre l'échantillon exécutable, la version IDE et la version FlashPlayer, merci. – Eugene

+0

@Eugene J'ai le même comportement avec les composants UIComponents dans Flash CS5 :( –

Répondre

1

et pourquoi pas?

import fl.controls.Button; 

var myButton:Button = new Button(); 
myButton.toggle = true;  
myButton.selected = true; 
myButton.label = "selected:" + myButton.selected; 
myButton.width = 120; 
myButton.move(10, 10); 
myButton.addEventListener(Event.CHANGE, changeHandler); 
addChild(myButton); 

function changeHandler(event:Event):void { 
    var myBtn:Button = event.currentTarget as Button; 
    myBtn.label = "selected:" + myBtn.selected; 
} 

avez-vous une source de bold_b composante? Pourriez-vous le partager?

+1

Cela fonctionne! Le comportement bascule/sélectionné est défectueux uniquement lorsque vous utilisez des instances de boutons déposées sur la scène, pas ajoutées via actionscript. est (Paramètres/LivePreview peut-être?) ... bold_b est juste une instance de fl.controls.Button droppée sur la scène –

+0

vous êtes les bienvenus) – Eugene

Questions connexes