Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-07-2011, 13:39   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Smile Variable aus dem Hauptdokument in einem Native Window ansprechen?

Hi Leute,

ich zerbrech mir zur Zeit den Kopf wie ich ein valueobject an ein native window oder einem popup weiterleiten kann. Aber ich schaff es nicht mal eine Variable weiterzuleiten. Selbst die Funktion "sayHello" geht in der Hauptanwendung auf statt im native window.

Mein Beispielcode sieht so aus:

Code:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark" 
					   xmlns:mx="library://ns.adobe.com/flex/mx">
	<fx:Script>
		<![CDATA[
			import mx.controls.Alert;
			
			private var newWindow:MyNativeWindow;
			public var house:String = "wooden house";
	
			private function openNewWindow():void {
				trace(house);
				if (newWindow != null) newWindow.close();
				newWindow = new MyNativeWindow();
				newWindow.width = 200;
				newWindow.height = 200;
				newWindow.data
				newWindow.addEventListener(MouseEvent.CLICK,sayHello)

				try 
				{					
					newWindow.open();
				} 
				catch (err:Error) 
				{			
					trace(err.message);
				}
			}
			private function sayHello(e:Event):void
			{
				Alert.show("Hallo Welt");
			}  
			
		]]>
	</fx:Script>    
	
	<fx:Declarations>
		<fx:Component className="MyNativeWindow">
			<mx:Window horizontalAlign="center" verticalAlign="middle" backgroundColor="blue">
				<fx:Script>
					<![CDATA[
						
						protected function button1_clickHandler(event:MouseEvent):void
						{
							trace(outerDocument.house);
							//trace(projectname(this.parentApplication).house);
						}						
					]]>
				</fx:Script>
				<mx:Button label="Yeah" click="button1_clickHandler(event)" />
				<mx:Button label="close" click="this.close()"/>				
			</mx:Window>
		</fx:Component>    
	</fx:Declarations>	
	
	<s:VGroup horizontalCenter="0" top="10">
		<s:Button label="Open New Window" color="black" click="openNewWindow()"/>
	</s:VGroup>
</s:WindowedApplication>
Wenn man auf den Yeah-Button drückt sollte auf der Konsole was angezeigt werden. Allerdings stürzt so das Programm ab (null-reference). Weiß da jemand Rat?

Viele Grüße
Christian

Geändert von flex5500 (15-07-2011 um 13:43 Uhr) Grund: was vergessen...
flex5500 ist offline   Mit Zitat antworten
Alt 15-07-2011, 14:19   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Gib dem PopUp einen setter und vermeide Inline Komponenten Definitionen.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-07-2011, 14:21   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Hättest du vielleicht ein kleines Beispiel dazu? Habe in Flex ziemlich selten mit setter und getter gearbeitet.

Geändert von flex5500 (15-07-2011 um 15:20 Uhr) Grund: .
flex5500 ist offline   Mit Zitat antworten
Alt 16-07-2011, 13:01   #4 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Ein kleines Beispiel. Und ich würde von statischen Klasseneigenschaften abraten!
Code:
<?xml version="1.0"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark">

	<fx:Script>
		<![CDATA[
		import fs.components.NativeWindowExt;
		import fs.controllers.NativeWindowController;

		private var _nativeWindowController:NativeWindowController;

		private var _nativeWindow:NativeWindowExt;

		private function openButton_clickHandler(event:MouseEvent):void
		{
			_nativeWindowController ||= new NativeWindowController();
			_nativeWindow = _nativeWindowController.openNewNativeWindow();
			_nativeWindow.data = "Just a String.";

			trace(_nativeWindow.data);
		}
		]]>
	</fx:Script>

	<s:HGroup>
		<s:Button id="openButton" click="openButton_clickHandler(event)" />
	</s:HGroup>

</s:WindowedApplication>
Code:
package fs.controllers
{
	import flash.display.NativeWindowInitOptions;

	import fs.components.NativeWindowExt;

	public class NativeWindowController
	{

		private var _nativeWindow:NativeWindowExt;

		private var _nativeWindowOptions:NativeWindowInitOptions;

		public function NativeWindowController()
		{
			_nativeWindowOptions = new NativeWindowInitOptions();
		}

		public function openNewNativeWindow():NativeWindowExt
		{
			close();

			_nativeWindow = new NativeWindowExt(_nativeWindowOptions);

			// add event handler
			return _nativeWindow;
		}

		private function close():void
		{
			if (!_nativeWindow)
			{
				return;
			}

			// remove event handler
			_nativeWindow.close();
			_nativeWindow = null;
		}
	}
}
Code:
package fs.components
{
	import flash.display.NativeWindow;

	public class NativeWindowExt extends NativeWindow
	{

		private var _data:Object;

		public function get data():Object
		{
			return _data;
		}

		public function set data(value:Object):void
		{
			_data = value;
		}

		public function NativeWindowExt(initOptions:flash.display.NativeWindowInitOptions)
		{
			super(initOptions);
		}
	}
}
Omega Psi ist offline   Mit Zitat antworten
Alt 18-07-2011, 09:05   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Hi Omega,

das is ja kein kleines Beispiel mehr...da is ja noch die Extrawurst mit dabei!

dickes Danke!

Werds heut mal ausprobieren.

Gruß
Christian
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 09:45   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Hi Omega,

wenn ich den Code so ausführe spuckt der Compiler in der .mxml Datei diese Fehlermeldungen aus:

1046: Type was not found or was not a compile-time constant: NativeWindowController.

1046: Type was not found or was not a compile-time constant: NativeWindowController.

Ich hoffe mal, dass ich die Pakete richtig erstellt habe...

Grüße
Christian
Angehängte Grafiken
Dateityp: png Unbenannt.PNG (6,0 KB, 2x aufgerufen)
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 10:08   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
components und controllers sind beides packages, keine Dateien.
Omega Psi ist offline   Mit Zitat antworten
Alt 18-07-2011, 10:45   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Ich glaube ich steh da etwas aufm Schlauch..habe in dem einem Monat Flex noch keine Pakete erzeugen müssen...wie erzeugt man Pakete? Mit rechtsklick bekomme ich zwar "package" zu sehen aber das is eher fast sowas wie ein "Verzeichnis"..
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 11:11   #9 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Ja, ein package ist ein Verzeichnis.

Angehängte Grafiken
Dateityp: png Screen shot 2011-07-18 at 12.10.03 PM.png (20,2 KB, 9x aufgerufen)
Omega Psi ist offline   Mit Zitat antworten
Alt 18-07-2011, 11:31   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Ich schäm mich grad etwas...
PHP-Code:
public class NativeWindowExt 
sollte Aufschluss auf den Dateinamen geben...liegt bestimmt an diesem Montag..

danke für die Geduld^^
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 11:40   #11 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Gerne doch.
Omega Psi ist offline   Mit Zitat antworten
Alt 18-07-2011, 11:46   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Das Beispiel klappt jetzt soweit. Aber es geht bei mir ein Fenster auf, wenn ich auf den Button klicke. In der Konsole sehe ich aber "Just a String".
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 12:02   #13 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Das ist auch das, was passieren soll in meinem Beispiel. Und was möchtest du?
Omega Psi ist offline   Mit Zitat antworten
Alt 18-07-2011, 13:00   #14 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 29
Das ein neues Native Windows aufgeht wenn ich auf nen Button klicke.Dort wiederum ist nochmal ein Button und wenn ich auf diesen klicke gibt diese per trace-Befehl eine Variable aus, die aber in der main.mxml liegt.

Gruß
Christian
flex5500 ist offline   Mit Zitat antworten
Alt 18-07-2011, 13:37   #15 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.142
Das ist aber schlecht. Damit erzeugst du unnötige Abhängigkeiten. Entweder du reichst du zu modifizierenden Daten durch oder du teilst der Anwendung via Controller + Events mit, was geändert werden soll.
Omega Psi ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
air, component, flex, native window, popup

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
auf variable von native window in der main app zugreifen bjt Adobe AIR 0 15-12-2008 21:37
Window ansprechen thiagojonas Flash 8 0 24-06-2008 14:37
variable in einem mc ansprechen mojo777 ActionScript 2 8 26-11-2006 23:35
Button in createPopup Window ansprechen huebschy Komponenten und SmartClips 7 10-08-2006 16:23


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele