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

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-08-2010, 08:46   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2006
Beiträge: 8
Flex 4: Events von verschachtelten Komponenten (Costum ItemRenderer) abfangen

Hallo,

bin noch neu in der Flex & AS3 Programmierung. Bisher bin ich aber dank Flex in a Week Videotutorials, des Flashforums und Google recht schnell bei Problemen weitergekommen.

Leider nicht bei diesem Fall:
Ich möchte von einem Costum ItemRenderer ein Event abfangen. Bei einer weiteren eigens erstellten Komponente habe ich dafür das Event als Eigenschaft angelegt und den Handler angegeben und die MainApp konnte das Event verarbeiten.

Problem ist nun, dass entweder die MainApp das Event nicht auflösen kann (wenn ich beispielsweise die Event-Eigenschaft in der DataGroup einfüge) oder Flex einen weiteres Script-Tag erstellt, sobald ich das Event beim "FurnierPodRenderer" als Eigenschaft unterbringe (wo es dann auch von der FlashBuilder AutoComplete Funktion erkannt wird).

Ich kann mir aber nicht vorstellen, dass ich jetzt eine Extrafunktion in einem "Sub"-Script-Tag erstellen muss, die wiederum das selbe Event nochmals feuert, damit es an die MainApp weitergereicht wird. Vielmehr dachte ich, es käme hier das Bubbling zum Tragen, die das Event durch meine App geistern lässt, bis es verwertet wird oder bis es in der MainApp angelangt ist.

In einem Artikel habe ich gelesen, man solle im ItemRenderer mit "parent" beim Eventdispatchen arbeiten (parent.parent.dispatchEvent(evtObj) ). Funktioniert aber nicht und zudem wäre es dann doch auch nicht mehr "loosely Coupled", oder?

So dachte ich es mir - so funktioniert's aber nicht (Fehler: Das Attribut 'deleteMaserEvent' für den Komponententyp spark.components.DataGroup kann nicht aufgelöst werden.):

Code:
<s:DataGroup id="savedFurnierView"
	x="460" y="3" 
	width="480" height="100"
	dataProvider="{savedMasersForArticleNo}"
        deleteMaserEvent="furnierPodRenderer_deleteMaserEventHandler">
	<s:layout>
		<s:HorizontalLayout gap="2"/>
	</s:layout>	
	<s:itemRenderer >
		<fx:Component>
			<s:ItemRenderer>								
				<components:FurnierPodRenderer furnier="{data}"/>								
			</s:ItemRenderer>
		</fx:Component>
	</s:itemRenderer>
</s:DataGroup>
So möchte es FlashBuilder gerne...aber so kompliziert kann das doch nicht gewollt sein (dabei wir das Script-Tag von der AutoComplete-Funktion generiert, weil auch das Event als mögliche Eigenschaft erkannt wird)?

Code:
<s:DataGroup id="savedFurnierView"
	x="460" y="3" 
	width="480" height="100"
	dataProvider="{savedMasersForArticleNo}">
	<s:layout>
		<s:HorizontalLayout gap="2"/>
	</s:layout>	
	<s:itemRenderer >
		<fx:Component>
			<s:ItemRenderer>
				<fx:Script>
					<![CDATA[
						import events.DeleteMaserEvent;

						protected function furnierpodrenderer_deleteMaserEventHandler(event:DeleteMaserEvent):void
						{
							// TODO Was mache ich dann hier? Nochmal das gleiche Event dispatchen?
						}

						]]>
				</fx:Script>
								<components:FurnierPodRenderer 
									furnier="{data}"
									deleteMaserEvent="furnierpodrenderer1_deleteMaserEventHandler(event)"/>								
						</s:ItemRenderer>
					</fx:Component>
				</s:itemRenderer>
			</s:DataGroup>
Danke schon jetzt für's Lesen des Romans und eure Hilfe!
kolby ist offline   Mit Zitat antworten
Alt 26-08-2010, 10:39   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 11.856
Mach am besten eine richtige Komponente draus. Es ergeben sich eher mehr Probleme als gutes aus den deklarativen Renderern.

Abfangen kannst du die Events, wenn die Events bubblen oder du holst dir die Referenz auf den Renderer via RendererExistenceEvents aus der DataGroup.
Omega Psi ist offline   Mit Zitat antworten
Alt 26-08-2010, 11:13   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2006
Beiträge: 8
OK, besten Dank! Werd ich so probieren!
kolby ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
costum itemrenderer, events, flex 4

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
Event abfangen aus ItemRenderer Komponente Doesel Flex programmieren 9 24-06-2008 14:51
Events von MC richtig abfangen tengelman ActionScript 2 4 02-01-2008 16:25
Events von SimpleButton abfangen? maschka ActionScript 3 2 12-02-2007 09:57
Events bei Verschachtelten MC's Terminal ActionScript 2 3 21-02-2006 15:31
Events abfangen Marco ActionScript 1 2 30-07-2002 13:08


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele