Zurück   Flashforum > Flex und AIR > Adobe AIR

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29-03-2011, 08:41   #1 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Question Flex Komponente in AS3 erzeugen

Hallo Forum,

ich steh mal wieder vor einem Problem und weiss nicht weiter. Ich würde gerne eine selbst erstellte Flex Komponente in einer AS3 Klasse instanziieren. Doch wird die Komponente, die ich per AS3 anspreche nicht angezeigt. Warum?

Meine Testanwendung sieht wie folgt aus:

Test2.mxml
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" xmlns:local="*"
					   creationComplete="init(event)">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			private var _testVar:TheClass = null;
			
			protected function init(event:FlexEvent):void {
				_testVar = new TheClass();
				this.addElement(_testVar);
			}

		]]>
	</fx:Script>
</s:WindowedApplication>
theComponent.mxml
Code:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
		 xmlns:s="library://ns.adobe.com/flex/spark" 
		 xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
	<s:BorderContainer borderColor="0xFF0000">
		<s:Label text="Das ist die Komponente" />
	</s:BorderContainer>
</s:Group>
TheClass.as
Code:
package {
	import mx.flash.UIMovieClip;

	public class TheClass extends UIMovieClip {
		
		public var flexComp:theComponent = null;
		
		public function TheClass() {
			flexComp = new theComponent();
			this.addChild(flexComp);
		}
	}
}
Vielen Dank für eine kurze Antwort!

Schönen Gruß,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 29-03-2011, 08:50   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Flex Komponenten kannst du nicht in reinen AS3 Projekten verwenden. Die benötigen das Flex Framework (Systemmanager / LayoutManager etc.) damit diese korrekt funktionieren.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 29-03-2011, 08:57   #3 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Zitat:
Zitat von mildesign Beitrag anzeigen
Flex Komponenten kannst du nicht in reinen AS3 Projekten verwenden. Die benötigen das Flex Framework (Systemmanager / LayoutManager etc.) damit diese korrekt funktionieren.
Hmm, es ist ja eigentlich ein Flex Projekt, aber ich verstehe was du meinst. Gibt es da eine Möglichkeit, das elegant zu lösen, weil sonst müsste ich immer die Komponente an die Klasse übergeben.

MXML
Code:
//.. Script
_testVar = new TheClass(testComp);
//...
<local:theComponent id="testComp" />
//...
Das funktioniert auch, ist aber nicht sonderlich schön.

Schönen Gruß,
Tom
TheChucky ist offline   Mit Zitat antworten
Alt 29-03-2011, 09:08   #4 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
ah ok jetzt habe ich verstanden was du vorhast. UIMovieCLip hat keine Logik für das Handling für Children dafür ist diese Klasse nötig:
mx.flash.ContainerMovieClip - ActionScript 3.0 Reference for the Adobe Flash Platform
Alternativ kannst du diese auch mit dem FlexComponentKit erstellen.

Allerdings mischt du mit deinem jetzigen Ansatz FlashUI + Halo + Spark. Eventuell solltest du den Flash Part als Spark-Komponente neu aufziehen.

Für eine genaue Beurteilung bräuchte ich mehr Informationen um was es sich bei der Anwendung konkret handelt.
__________________
mfg Frank

Geändert von mildesign (29-03-2011 um 09:14 Uhr)
mildesign ist offline   Mit Zitat antworten
Alt 29-03-2011, 09:16   #5 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Zitat:
Zitat von mildesign Beitrag anzeigen
ah ok jetzt habe ich verstanden was du vorhast. UIMovieCLip hat keine Logik für das Handling für Children dafür ist diese Klasse nötig:
mx.flash.ContainerMovieClip - ActionScript 3.0 Reference for the Adobe Flash Platform
Alternativ kannst du diese auch mit dem FlexComponentKit erstellen.

Allerdings mischt du mit deinem jetzigen Ansatz FlashUI + Halo + Spark. Eventuell solltest du den Flash Part als Spark-Komponente neu aufziehen.
Danke für die schnelle Antwort, aber was meinst du damit, den Flash Part als Spark-Komponente neu aufzuziehen? Die AS3 Klasse kannste ja nicht meinen oder?
Mein Problem ist, dass ich per Flash einen MC gezeichnet habe, den ich in meiner Flex Anwendung nur Anzeigen will und mit ein wenig Logik (AS-Klasse) verbinden will. Mit der FlexComponentKit funktioniert das auch. Aber das Ansprechen mit der AS3 Klasse klappt nicht.

Zu "ContainerMovieClip": Also wenn ich die AS-Klasse den ContainerMovieClip extenden lasse, wird dennoch nix in meiner AIR-Anwendung angezeigt. Irgendwie steh ich auf dem Schlauch oder habe deinen Ansatz nicht ganz verstanden.

Vielen Dank nochmal!
Tom

Geändert von TheChucky (29-03-2011 um 09:17 Uhr)
TheChucky ist offline   Mit Zitat antworten
Alt 29-03-2011, 09:55   #6 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
Nur von ContainerMovieClip extenden bringt leider nix da die Klasse noch mehr informationen benötigt.
Video tutorial: Create Flex container components with Flash CS4 | Serge Jespers


Zitat:
Mein Problem ist, dass ich per Flash einen MC gezeichnet habe, den ich in meiner Flex Anwendung nur Anzeigen will
wenn du ihn nur anzeigen willst warum verwendest du den Flashpart dann noch als zusätzlichen Container für FlexComponenten
Zitat:
Mit der FlexComponentKit funktioniert das auch. Aber das Ansprechen mit der AS3 Klasse klappt nicht.
mit ansprechen meinst du das du keine weiteren Komponenten deiner UIMovieClip Flex Component hinzufügen kannst?

Wie schon gesagt ich finde die Archtektur deiner Anwendung etwas konfus.

momentan hab ich folgendes Scenario im Kopf :
<Flex Air Spark Application >
< Halo MovieContainer mit Flash Logik>
<Spark BorderContainer>
<Spark Label/>
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 29-03-2011, 10:34   #7 (permalink)
AIRcrobat
 
Registriert seit: Mar 2009
Ort: München
Beiträge: 78
Da geb ich dir Recht, dass das alles etwas konfus ist. Deswegen hole ich mal etwas weiter aus. Vielleicht wird es dann klarer was ich vorhabe.

Als Basis meines Projektes habe ich eine AIR Anwendung. In dieser sollten alle Teile zusammenlaufen. Um die Logik zu strukturieren verwende ich mehrere AS3 Klassen, die ich in mein AIR Projekt einbinde. Zusätzlich dazu gibt es in Flash gezeichnete MCs, die ich mit Hilfe des FlexComponentKit als SWC exportiert habe und in AIR eingebunden habe. Da ich die Logik aller Komponenten gerne in meinen (Flex-)AS3 Klassen unterbringen würde und nicht in Flash selbst implementieren will, möchte ich auf die Komponenten zugreifen.

Ich hatte gehofft, dass ich in AS3 einfach auf Flex/AIR Komponenten zugreifen und diese instanziieren kann.

Um mein Beispiel im ersten Beitrag aufzugreifen: theComponent.mxml sollte lediglich als Bsp. dienen. Eigentlich binde ich hier ausschließlich von Flash exportierte Flex Komponenten ein.

Also habe ich in etwa sowas:
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" xmlns:local="*"
					   creationComplete="init(event)">
	...
	<local:eigeneFlashComponente id="eigeneComp" />
	<local:eigeneFlashComponente2 id="eigeneComp2" />

</s:WindowedApplication>
Aber ich würde gerne diese Komponenten dynamisch mit AS3 erstellen und auch die Logik in diese Klassen packen:

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" xmlns:local="*"
					   creationComplete="init(event)">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			private var _testVar:eigeneFlashComponenteLogik = null;
			protected function init(event:FlexEvent):void {
				_testVar = new eigeneFlashComponenteLogik();
				this.addElement(_testVar);
			}
		]]>
	</fx:Script>
</s:WindowedApplication>
Code:
package {
	public class eigeneFlashComponenteLogik {
		
		public var flexComp:eigeneFlashComponente = null;
		
		public function TheClass() {
			flashComp = new eigeneFlashComponente ();
			return flashComp;
		}
		
		// ... weiter funktionen, die diese FlashComp bewegen, an- und ausblenden etc.
	}
}
Ich hoffe, dass es jetzt ein wenig klarer ist, was ich vor habe.

Vielen Dank für deine Hilfe,
Tom
TheChucky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
ansprechen, as3, erzeugen, flex, komponente

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 Webservice-Komponente in Flash sobo ActionScript 3 0 12-05-2009 16:11
Per Flex SWC erzeugen und in Flash nutzen s.h.a.r.k ActionScript 3 2 19-02-2009 08:18
Aus FLVPlayback Komponente Metadaten erzeugen Lorraine ActionScript 3 1 11-09-2008 14:54
Problem mit Flash-Komponente in Flex murray Flex programmieren 1 03-07-2008 17:14
CS3/Flex Komponente & Fonts gio*lemon ActionScript 3 1 27-05-2007 14:35


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele