Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-01-2009, 18:31   #1 (permalink)
Neuer User
 
Benutzerbild von lindner
 
Registriert seit: Jul 2002
Beiträge: 277
Aus Klasse heraus Objekt-Eigentschaften in Application verändern

Hallo Leute,

ich steh grad vor einem sicherlich banalen Problem, weiß nur nicht recht wie ich danach suchen soll und hab auch nix gefunden.. Steht bestimmt irgendwo..

Folgender Sachverhalt:

Ich habe eine Application mit zwei Label darin:
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal">
 <mx:Script>
        <![CDATA[
        	import foo.Bar;
               public var copy:Bar = new Bar();
      ]]>
    </mx:Script>

    <mx:Label id="myLabel1" text="Hallo"/>
    <mx:Label id="myLabel2" />
</mx:Application>
nun habe ich eine Klasse "Bar" im namespace "foo", daher der aufruf..
die class sieht dann so aus..
PHP-Code:
package foo
{
    public class 
Bar 
    
{
        public function 
Bar() 
        {
            
// -> hier würde ich gerne den Text des Labels 1 auslesen und in Label 2 schreiben ändern!
        
}
    }

So und im Konstruktor würde ich gerne, wie schon geschrieben, den Text aus Label1 auslesen und ihn dann in Label2 schreiben, ohne dass ich an den Construktor die Objekte übergeben muss, das geht doch sicherlich, oder?!

PHP-Code:
Application.application.label2.text Application.application.label1.text
Das geht nicht.. in der KLasse wird Application nicht erkannt.
das wars schon, ich würde mich über eine antwort sehr freuen.

lg patrick
lindner ist offline   Mit Zitat antworten
Alt 10-01-2009, 20:12   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Du musst eine Referenz auf die Application in Bar setzen.
Omega Psi ist offline   Mit Zitat antworten
Alt 10-01-2009, 20:27   #3 (permalink)
Neuer User
 
Benutzerbild von lindner
 
Registriert seit: Jul 2002
Beiträge: 277
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Du musst eine Referenz auf die Application in Bar setzen.
und wie und wo?! import?
lindner ist offline   Mit Zitat antworten
Alt 10-01-2009, 20:50   #4 (permalink)
Neuer User
 
Benutzerbild von lindner
 
Registriert seit: Jul 2002
Beiträge: 277
Zitat:
Zitat von lindner Beitrag anzeigen
und wie und wo?! import?
import mx.core.Application;
lindner ist offline   Mit Zitat antworten
Alt 10-01-2009, 20:52   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
ActionScript:
  1. package foo
  2. {
  3.  
  4.     import flash.events.Event;
  5.     import flash.events.EventDispatcher;
  6.    
  7.     import mx.core.Application;
  8.  
  9.     [Event(name="barEvent", type="foo.event.BarEvent")]
  10.  
  11.     public class Bar extends EventDispatcher
  12.     {
  13.  
  14.         private var _application:Application;
  15.  
  16.         [Bindable("applicationChanged")]
  17.         public function get application():Application
  18.         {
  19.             return _application;
  20.         }
  21.  
  22.         public function set application(value:Application):void
  23.         {
  24.             if (_application == value) return;
  25.             _application = value;
  26.             dispatchEvent(new Event("applicationChanged"));
  27.         }
  28.  
  29.         public function Bar()
  30.         {
  31.             super();
  32.         }
  33.  
  34.         public function doSomething():void
  35.         {
  36.             /* Do something with the _application instance. */
  37.         }
  38.     }
  39. }
Das ist eine Möglichkeit. Aber eher kritisch da sehr unschön. Für die zweit dispatched to ein Event wie zum Beispiel:
ActionScript:
  1. package foo
  2. {
  3.  
  4.     import flash.events.Event;
  5.  
  6.     public class BarEvent extends Event
  7.     {
  8.  
  9.         public static FOO_EVENT:String = "fooEvent";
  10.  
  11.         public function BarEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
  12.         {
  13.             super(type, bubbles, cancelable);
  14.         }
  15.     }
  16. }
Das passiert dann in der Funktion doSomething. Du musst dann nur noch einen EventListener in der Appliktion definieren für den Event-Typ. Vorteil: lose Kopplung.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele