Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-01-2009, 13:10   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2008
Beiträge: 11
addChild() in übergeordnete Komponente

Hallo,

vereinfacht gesagt habe ich folgende Dateien:
Main.mxml, Part.mxml, Main.as und Part.as

Mit folgender Methode kann ich aus Main.as verschiedene *.mxml Dateien in einen Canvas (id=test123) in Main.mxml laden:

Code:
public static function loadInto(componentId:Canvas, className:DisplayObject):void
	{
		componentId.removeAllChildren();
		componentId.addChild(className);
	}
Meine Frage ist jetzt wie kann ich aus Part.as/Part.mxml, also aus einer Datei "innerhalb" vom Canvas test123, eine neue Datei in den Canvas laden. Wenn ich es mit obiger Methode versuche kommt die Fehlermeldung dass er den Canvas test123 nicht findet.
Wenn ich mit <mx:source... die Part.as in die Main.mxml einbinde könnte er den Canvas zwar finden, aber ich bekomme in Part.as unzählige Fehler da er nicht mehr weiss auf welche mxml ich zugreife (z.B. bei Label123.text = "Hallo"). Wie kann ich also aus einer Datei die in einen Canvas geladen wurde eine andere Datei in den Canvas laden ?
Insomn!a ist offline   Mit Zitat antworten
Alt 05-01-2009, 13:21   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Sorry, ich verstehe das nicht so ganz.

Ausserdem:
  1. Verwende keine Datei sonder Klassennamen + Namensraum.
  2. Verwende passende Bezeichner: className für einen Instanznamen ist etwas irreführend.

Am besten du dispatched einen Event in die aggregierende Komponente und rufst dann im EventListener deine Funktionalitäten auf.
Omega Psi ist offline   Mit Zitat antworten
Alt 05-01-2009, 14:16   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2008
Beiträge: 11
Hallo Omega,

dein Vorschlag mit den Events verstehe ich nicht so ganz, ich bin aber auch noch Anfänger.

Wenn ich in der Part.mxml ein Event definiere, z.B. click="loadInto(test123, new Test())"erscheint natürlich die Fehlermeldung "Zugriff auf eine nicht definierte Eigenschaft test123".

Wenn ich ein Event click="loadInto(new Test())" definiere mit der Methode :
Code:
public static function loadInto(className:DisplayObject):void
	{
		test123.removeAllChildren();
		test123.addChild(className);
	}
erscheint dieselbe Fehlermeldung. Obwohl die Methode dieses mal in der Main.as steht.

vllt. kannst du mir ja einen beispielcode geben ?
Insomn!a ist offline   Mit Zitat antworten
Alt 12-01-2009, 14:51   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2008
Beiträge: 11
Servus,

falls es noch jemanden interessiert, so habe ich das Problem gelöst:

mx.core.Application.application.[Komponentenname].addChild(new Test())
Insomn!a ist offline   Mit Zitat antworten
Alt 12-01-2009, 14:53   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.146
Besser wäre es in den entsprechenden Scope ein Event zu dispatchen... so sparst du dir das harte referenzieren und das Hoffen, dass mx.core.Application.application.[<component>] existiert.
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 09:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele