0
Ich habe einige VBox mit Knopf. Ich möchte, dass meine Schaltfläche das Label ändert, nachdem Sie darauf geklickt haben. Ich versuche, die Code-Behind-Praxis zu verwenden, aber die Instanz der Schaltfläche ist immer null. Es gibt Code:Flex 3: Code-Behind Problem
package TestPackage
{
import mx.containers.VBox;
import mx.controls.Button;
public class ControlsBox extends VBox
{
[Bindable]
public var btnPlay : Button;
public function ControlsBox()
{
super();
}
override protected function childrenCreated():void
{
super.childrenCreated();
}
public function ChangeImage():void
{
btnPlay.label = "a";
}
}
}
Here is mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:controls="TestPackage.*">
<controls:ControlsBox id="ctrlVBox">
<mx:Button id="btnPlay" click="this.ctrlVBox.ChangeImage();" label="c"></mx:Button>
</controls:ControlsBox>
</mx:Application>
Was mache ich falsch? Und wie geht das richtig? Dank
Hmmm .... sieht seltsam ... Ich möchte einen Knopf haben und ich möchte die Möglichkeit haben, mit Code-Behind zu arbeiten ... In deinem Code sollten wir einen Button in den anderen einfügen. Ich verstehe nicht, warum ... danke trotzdem – mimic
Der Codebehind deklariert eine * Variable * 'btnPlay', die eine Instanz des Typs' Button' enthalten kann, aber der Wert der Variablen ist anfänglich Null - das Codebehind erstellt nicht tatsächlich ein Schaltflächeninstanz Stattdessen wird der Button * instance * von der mxml-Anweisung ' ' erzeugt. Die Position des Buttons in '' weist MXML an, der 'btnPlay'-Variablen die neue 'Button'-Instanz zuzuweisen. Sonderbare Syntax, aber es sollte funktionieren. –
Lee
[Spark Skinning] (http://help.adobe.com/de_DE/flex/using/WSC8DB0C28-F7A6-48ff-9899-7957415A0A49.html) ist eine viel bessere Passform für das, was Sie versuchen zu tun - es macht diese Art der Sache viel einfacher als der Versuch, im .NET "Codebehind" -Konzept zu schuhen. Genauer gesagt sollten Sie [Skin Parts] (http://www.adobe.com/devnet/flex/articles/flashbuilder4_skin_parts.html) ausprobieren. – Lee