Flashhilfe.de - Flash Community

Flex Component Kit: TextField + States geht nicht? [Flash 10]

 


AntwortenRegistrieren Seite1  

omega psi#1
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

30.10.2008, 08:55

Ich habe eine Basis-Komponente in Flash + eigene Basisklasse. Diese beinhaltet 2 Frames in denen je ein Schlüsselbild für eine TextField-instanz verwendet werden. Die beiden States over und out werden erkannt und der StateChangeEvent.CURRENT_STATE_CHANGE wird auch dispatched, Listener wird auch ausgeführt. Initial kann ich das Label setzen.

Problem: sobald ich den Zustand einmal gewechselt habe, ist der Text weg  im TextField -> nur visuel: ein trace gibt immer noch den richtigen String zurück.

Hier der Code zur Klasse:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package fs.examples.components
{
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.text.TextField;
   
   import mx.events.StateChangeEvent;
   import mx.flash.UIMovieClip;

   public class StatefulBase extends UIMovieClip
   {

      private var _label:String;
      private var _labelTextField:TextField;

      [Bindable("labelChanged")]
      public function get label():String
      {
         return this._labelTextField.text;
      }

      public function set label(value:String):void
      {
         if (value == this._label)
         {
            return;
         }
         this._label = value;
         this._labelTextField.text = this._label;
         this.dispatchEvent(new Event("labelChanged"));
      }

      public function StatefulBase()
      {
         super();
         this.initializeComponent();
      }

      private function eventListener(event:Event):void
      {
         switch(event.type)
         {
            case StateChangeEvent.CURRENT_STATE_CHANGE:
               this._labelTextField.text = this._label;
               break;
            case MouseEvent.MOUSE_OUT:
               this.currentState = "out";
               break;
            case MouseEvent.MOUSE_OVER:
               this.currentState = "over";
               break;
         }
      }

      protected function initializeComponent():void
      {
         if (this.hasOwnProperty("labelText"))
         {
            if (this["labelText"] is TextField)
            {
               this._labelTextField = TextField(this["labelText"]);
            }
         }
         this.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, eventListener);
         this.addEventListener(MouseEvent.MOUSE_OUT, eventListener);
         this.addEventListener(MouseEvent.MOUSE_OVER, eventListener);
      }
   }
}


Hier der Link zu den Source: http://www.box.net/shared/48p7bc63hj
Architectures - Refactoring - Prototyping - Coding - Training
Geändert von omega psi am 30.10.08 um 08:58 Uhr
Sebastian#2
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6981
Wohnort: München
Registriert: Jan 2002

30.10.2008, 11:21

In der fla hast Du zwei Textfelder. Die haben zwar den gleichen Instanznamen, aber innerhalb von Flash hat es eine andere Referenz. Du verliest deswegen bei MouseOver diese Referenz.

Was Du deswegen machen musst ist einfach im zweiten Textfeld Frame, das Keyframe löschen und einen normalen Frame daraus machen... somit geht das Textfeld von Frame 1 also über 2 Frames. Dann funktioniert es.
JavaScript & JavaFX Freelancer || Flashhilfe @ Twitter || XING Profil
omega psi#3
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

Themenautor/in

30.10.2008, 12:01

Ja, das war auch mein Ansatz und in meinen Augen auch die vernünftige Lösung. Leider brauch der Designer 2 keyframes für die Filter... weisst du...

Thanx for the input. Ich hatte gehofft, dass es anders aussieht - aber ich werde das nun programmatisch lösen.
Architectures - Refactoring - Prototyping - Coding - Training

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de