Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-01-2009, 22:18   #1 (permalink)
n00b
 
Registriert seit: Jun 2005
Beiträge: 271
Gelöst: Parameter an Komponente übergeben

hi, ich habe ein komponente die ein paar button und label enthält.
ich möchte jetzt für ein label den text mitgeben.

component:
Code:
[...]
private var destination:String;
			
			private function init():void 
			{
				destination = new String;
			}
			
			public function get dest():String
			{
				return this.destLabel.text;
			}
			
			public function set dest(str:String):void
			{
				this.destination=str;
			}
[...]
und so wird die dann eingebunden:
Code:
<controls:Fileupload id="TopNews" left="0" y="350" width="500" height="120" dest="hello"/>
dest soll dabei der text des labels destLabel werden.
Fehler werden nicht angezeigt aber wenn ich das ganze kompiliere, wird nur eine weisse seite angezeigt. wenn cih in dem setter 'this.destination=str;' aus kommentiere, wird alles angezeigt aber der parameter natürlich nciht übergeben.

kann mir bitte jemand verraten was ich falsch mache?

gruß,
phase
__________________
--
Don't eat yellow snow

Geändert von phase (14-01-2009 um 22:32 Uhr)
phase ist offline   Mit Zitat antworten
Alt 14-01-2009, 22:31   #2 (permalink)
n00b
 
Registriert seit: Jun 2005
Beiträge: 271
ok, ich habs jetzt doch hinbekommen.

Code:
[Bindable]
private var _destination:String = "Default";
			
public function get dest():String {
	return _destination;
}
			
public function set dest(value:String):void {
	destination = value;
}
__________________
--
Don't eat yellow snow
phase ist offline   Mit Zitat antworten
Alt 14-01-2009, 22:54   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Als gut gemeinter Nachtrag - und ich hatte die Beispiele nun schon getippt

Die sparsame Version. Ähnlich deiner nur mit wirtschaftlicherem DataBinding.
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			private var _title:String;

			[Bindable("titleChanged")]
			public function get title():String
			{
				return _title;
			}

			public function set title(value:String):void
			{
				if (_title == value) return;
				_title = value;
				dispatchEvent(new Event("titleChanged"));
			}
		]]>
	</mx:Script>
	<mx:Label text="{title}" />
</mx:HBox>
Bei UIComponents sollte man aber besser über die Template Methoden arbeiten:
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
	<mx:Script>
		<![CDATA[
			private var _title:String;
			private var _titleChanged:Boolean = false;

			[Bindable("titleChanged")]
			public function get title():String
			{
				return _title;
			}

			public function set title(value:String):void
			{
				if (_title == value) return;
				_title = value;
				_titleChanged = true;
				invalidateProperties();
				dispatchEvent(new Event("titleChanged"));
			}

			override protected function commitProperties():void
			{
				super.commitProperties();
				if (_titleChanged)
				{
					_titleChanged = false;
					titleLabel.text = _title
				}
			}
		]]>
	</mx:Script>
	<mx:Label id="titleLabel" />
</mx:HBox>
Bei diesem Beispiel mag das überzogen wirken - ist es auch, aber bei komplexeren Komponenten kriegt man sonst mit der verzögerten Erzeugung der Komponente Probleme.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-01-2009, 08:11   #4 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Binding ist dein Freund. Deklariere einfach eine oeffnetliche Variable fuer die Eigenschaft die du deiner Komponente zuweisen willst und bind dann intern an diese Eigebschaft.

Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml">
        <mx:String id="title"/>
	<mx:Label text="{title}" />
</mx:HBox>
Schöne Grüße
hazy
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D

Geändert von hazy fantazy (15-01-2009 um 08:13 Uhr)
hazy fantazy ist offline   Mit Zitat antworten
Alt 15-01-2009, 08:34   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Aber bei vielen Objekten mit vielen Properties würde ich diese straight forward Strategie nicht fahren.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-01-2009, 20:49   #6 (permalink)
n00b
 
Registriert seit: Jun 2005
Beiträge: 271
Zitat:
Zitat von Omega Psi Beitrag anzeigen
Als gut gemeinter Nachtrag - und ich hatte die Beispiele nun schon getippt
...
Die sparsame Version. Ähnlich deiner nur mit wirtschaftlicherem DataBinding.
Bei diesem Beispiel mag das überzogen wirken - ist es auch, aber bei komplexeren Komponenten kriegt man sonst mit der verzögerten Erzeugung der Komponente Probleme.
hi Omega Psi, hab nach meinem psoting dann doch noch mal gesucht und bin dann tatsächlich selbst drauf gekommen ;-)

deine variante scheint mir irgendwie komplizierter aber wahrscheinlich sieht man den vorteil erst bei komplexeren dingen, diesmal reicht mir meine variante. ich hab den vorteil von [Bindable("titleChanged")]
auch noch nicht feststellen können und was meinst du mit wirtschaftlicher?

gruß,
phase
__________________
--
Don't eat yellow snow
phase ist offline   Mit Zitat antworten
Alt 15-01-2009, 21:00   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Mit wirtschaftlicher meine ich folgendes.

Verwendest du
ActionScript:
  1. [Bindable]
  2. public var name:String;
generiert dir das Flex Framework ähnlichen Code, nur wird ein PropertyChangeEvent dispatched. Da der PropertyChangeEvent nur den Typen PropertyChangeEvent.PROPERTY_CHANGE kennt, springen alle EventListener an, die durch den generierten Stubcode erzeugt wurden. Das bedeutet es werden potenziell ungleich mehr EventListener ausgeführt je mehr Properties gebunden werden, als mit einer differenzierten [Bindable("type")] Deklaration.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-01-2009, 21:18   #8 (permalink)
n00b
 
Registriert seit: Jun 2005
Beiträge: 271
ok, verstehe aber sollte man dann nciht immer diese form benutzen?
__________________
--
Don't eat yellow snow
phase ist offline   Mit Zitat antworten
Alt 15-01-2009, 21:38   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.147
Meine Form? Ja, schaden tut es nicht.
Omega Psi ist offline   Mit Zitat antworten
Alt 16-01-2009, 07:40   #10 (permalink)
Nagelneuer User
 
Benutzerbild von hazy fantazy
 
Registriert seit: Dec 2005
Beiträge: 924
Klar schadet das und zwar der Lesbarkeit. Premature optimizing nennen wir das. Optimieren sollte man nur, wenn es auch wirklich nötig ist.
__________________
The fact that you've got "Replica" written on the side of your gun and the fact that I've got "Desert Eagle written on the side of mine ... :D
hazy fantazy 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 13:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele