• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 06-03-2010, 14:10   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Flex Module Problem mit öffentlichen Methoden

Hallo allerseits! Hat jemand schon mal das Problem gehabt, dass er
von aussen nicht auf Objecte innerhalb eines Moduls zugreifen kann? Oder nur eingeschränkt.

Beispiel: In meine Modul gibt es eine Komponente mit diversen Methoden. Wenn ich dieses innerhalb des Moduls anspreche funktionieren die auch bestens. Wenn ich aber nun aus der Application auf eine öffentliche Methode des Moduls zugreife welche wiederum eine Methode der beeinhaltenden Komponente ausführen soll... ERROR. Ich hab mal bisschen rumgespiel.

Testausgabe eines Canvas innerhalb des Moduls (trace(this.myCan)) ergibt dei gewohnte ausgabe. Die selbe Testausgabe aus der Application aufgerufen ergibt: NULL.

Hat jemand ne Idee? Irgendwelche Security Settings vielleicht?
m.franz ist offline   Mit Zitat antworten
Alt 06-03-2010, 15:39   #2 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 148
hi,
könnte an der applicationDomain liegen...

wenn du ein module lädst, kannst du noch die applicationDomain angeben. zumindest ist das via ModuleManager möglich. wie es bei mxml aussieht kann ich nicht sagen, da ich es nicht auf diesem weg anwende..

auf die richtige/gleiche applicationDomain der hauptapplikation kannst du via ApplicationDomain.currentDomain ( glaube ich) zugreifen, weiss es jetzt nicht grad auswendig... vielleicht klappts dann..

ansonsten noch mit SecurityDomain rumspielen, ist der dritte parameter bei ModuleManager.getModule()

ps: das selbe verhalten tritt auch bei styles auf. die werden nur auf module angewendet die in die selbe applicationdomain geladen wurden...

bin jetzt allgemein nicht sicher ob die klassen und methoden genauso heissen wie ich geschrieben haben, aber der ansatz sollte weiterhelfen...

grüsse
sytch ist offline   Mit Zitat antworten
Alt 06-03-2010, 15:51   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Also das ist echt verrückt... Ich mach das jetzt so, dass die Daten die ich aus dem Modul benötige von dem Modul selber an die Application übergeben werden. Dann gehts. Holen darf ich sie nicht. Verrückt. ... Aber ich bleib am ball.
m.franz ist offline   Mit Zitat antworten
Alt 07-03-2010, 08:39   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 148
hmm, ich habs jetzt mal ausprobiert... ich kann unabhängig in welche applicationdomain ein module geladen wurde, auf funktionen zugreifen...

bindest du das module via mxml ein ?
sytch ist offline   Mit Zitat antworten
Alt 07-03-2010, 11:40   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2008
Beiträge: 118
Also auf Funktionen zugreifen geht auch... nur was diese Methoden zurückliefern ist halt irgendwie gesperrt.
Die Einbindung erfolgt via AS
PHP-Code:

// Der Modul Loader
modul_loader.url "testModul.swf";
modul_loader.loadModule();
this.DocumentCanvas.addChild(modul_loader);

// IModuleInfo
modul_info ModuleManager.getModule("testModul.swf");    
modul_info.addEventListener("ready"onReady);
modul_info.addEventListener("progress"onProgress);
modul_info.load();


// Ready Event
public function onReady(event:Event):void {

    
modul_object modul_info.factory.create() as Object;

}


// Mouse Event 
public function click_irgendwas(event:MouseEvent):void{

// Aufruf einer Methode innerhalb des geladenen Moduls

modul_object.do_something();

}


// Module --------------------------------------------

...bisschen MXML vorher

<mx:TextArea id="tf_0" x="10" y="10" width="575" height="81" name="text"  text="Halllo" fontSize="36"  fontFamily="Arial" editable="false"/>

... 
und das AS

public function 
do_something():void {

trace(this.tf_0);

Diese Ausgabe müsste eingentlich ... Docoument.Canvas.bla.bal.Textfiel... uswergebenTut sie aber nichtSonder lediglichNULL



Anders wenn ich diese Funktion z.b innerhalb des Modules aufrufeDann bekomm ich ne richtige Ausgabe
m.franz ist offline   Mit Zitat antworten
Alt 07-03-2010, 13:07   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 148
hmm, bei mir geht das so:

Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
	<![CDATA[
		import mx.events.ModuleEvent;
		import mx.modules.ModuleManager;
		import mx.modules.IModuleInfo;
		private var mi_0 : IModuleInfo;
		private var mi_1 : IModuleInfo;
	
		private var module0 : Module1;
		private var module1 : Module2;
	
		private function loadModules():void{
			this.mi_0 = ModuleManager.getModule( "Module1.swf" );
			this.mi_0.addEventListener( ModuleEvent.READY, listener );
			this.mi_0.load(); 
		}
		
		private function listener(event:ModuleEvent):void{
			trace("module1 loaded")
			this.module0 = IModuleInfo(event.currentTarget).factory.create() as Module1;
			this.module0.x = this.butn0.x;
			this.module0.y = 100;
			
			this.addChild( this.module0 );
			
			this.butn0.enabled = true;
		}
		
		
	]]>
</mx:Script>
	<mx:Button x="10" y="10" label="loadModules" click="loadModules()"/>
	<mx:Button x="10" y="465" label="getSomeData Module1" id="butn0" enabled="false" click="this.text0.text = this.module0.getSomeData()"/>
	<mx:TextArea x="10" y="495" id="text0"/>
	
</mx:Application>
Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300">
	<mx:Script>
		<![CDATA[
			private var _someData : String = "someDataFromModule1";
		
			public function getSomeData():String{
				return this._someData;
			}
		]]>
	</mx:Script>
	<mx:Label x="10" y="10" text="Module1"/>
	<mx:Canvas x="10" y="36" width="200" height="200" backgroundColor="#C80909">
	</mx:Canvas>
</mx:Module>
sytch 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Flex Builder / Module einezlen ausführen m.franz Flex programmieren 7 17-11-2008 19:20
Problem mit set Methoden stylefetish ActionScript 3 2 29-10-2008 12:27
Gesucht: Liniennetze im öffentlichen Verkehr Gabiwan Gestaltungstheorien 9 03-04-2006 13:07
Methoden Aufruf Problem Mediautilus24 Softwarearchitektur und Entwurfsmuster 8 30-11-2005 16:18
Flash Player 6 im öffentlichen Test wolter Nachrichten 26 26-02-2002 14:35


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

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


Copyright ©1999 – 2012 Marc Thiele