actionscript 3 - Adobe Flex-Komponentenereignisse

Translate

Ich habe eine Komponente geschrieben, die einen Dateinamen, eine Miniaturansicht und eine Schaltfläche zum Laden / Abspielen der Datei anzeigt. Die Komponente ist an einen Repeater datengebunden. Wie kann ich dafür sorgen, dass das Schaltflächenereignis für die Hauptanwendung ausgelöst wird und ihr mitteilt, welche Datei abgespielt werden soll?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Auf Ihrer benutzerdefinierten Komponente können Sie das Schaltflächenklickereignis anhören und dann ein benutzerdefiniertes Ereignis generieren, das Informationen zu der Datei enthält, die Sie abspielen möchten. Anschließend können Sie die Eigenschaft bubbles für das Ereignis auf true setzen und das benutzerdefinierte Ereignis von Ihrer benutzerdefinierten Komponente aus senden. Mit der Eigenschaft bubbles wird Ihr Ereignis in der Anzeigeliste angezeigt und erreicht Ihre Hauptanwendung. Jetzt können Sie in Ihrer Hauptanwendung dieses Ereignis anhören und die richtige Datei abspielen. Hoffe das hilft.

Quelle
Translate

Ich habe es herausgefunden (endlich)

Benutzerdefinierte Komponente

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" x="0" y="0" width="215" height="102" styleName="leftListItemPanel" backgroundColor="#ECECEC" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Script>
    <![CDATA[
        [Bindable] public var Title:String = "";
        [Bindable] public var Description:String = "";
        [Bindable] public var Icon:String = ""; 
        [Bindable] public var FileID:String = "";
        private function viewClickHandler():void{
            dispatchEvent(new Event("viewClick", true));// bubble to parent
        }
    ]]>
</mx:Script>
<mx:Metadata>
    [Event(name="viewClick", type="flash.events.Event")]
</mx:Metadata>
<mx:Label x="11" y="9" text="{String(Title)}" styleName="listItemLabel"/>
<mx:TextArea x="11" y="25" height="36" width="170" backgroundAlpha="0.0" alpha="0.0" styleName="listItemDesc" wordWrap="true" editable="false" text="{String(Description)}"/>
<mx:Button x="20" y="65" label="View" click="viewClickHandler();" styleName="listItemButton" height="22" width="60"/>
<mx:LinkButton x="106" y="68" label="Details..." styleName="listItemLink" height="18"/>
<mx:HRule x="0" y="101" width="215"/>

Der Repeater

<mx:Canvas id="pnlSpotlight" label="SPOTLIGHT" height="100%" width="100%" horizontalScrollPolicy="off">
    <mx:VBox width="100%" height="80%" paddingTop="2" paddingBottom="1"  verticalGap="1">
        <mx:Repeater id="rptrSpotlight" dataProvider="{aSpotlight}">            
            <sm:SmallCourseListItem 
                viewClick="PlayFile(event.currentTarget.getRepeaterItem().fileName);"
                Description="{rptrSpotlight.currentItem.fileDescription}"
                FileID = "{rptrRecentlyViewed.currentItem.fileName}"    
                Title="{rptrSpotlight.currentItem.fileTitle}" />
        </mx:Repeater>
    </mx:VBox>
</mx:Canvas>

Handhabungsfunktion

private function PlayFile(fileName:String):void{
    Alert.show(fileName.toString());
}
Quelle