actionscript 3 - Événements du composant Adobe Flex

Translate

J'ai écrit un composant qui affiche un nom de fichier, une vignette et un bouton pour charger / lire le fichier. Le composant est lié aux données d'un répéteur. Comment puis-je faire en sorte que l'événement de bouton se déclenche sur l'application principale et lui indique le fichier à lire?

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

Toutes les réponses

Translate

Sur votre composant personnalisé, vous pouvez écouter l'événement de clic sur le bouton, puis générer un événement personnalisé contenant des informations sur le fichier que vous souhaitez lire. Vous pouvez ensuite définir la propriété bulles sur true sur l'événement et distribuer l'événement personnalisé à partir de votre composant personnalisé. La propriété bulles fera flotter votre événement dans la liste d'affichage et atteindra votre application principale. Maintenant, sur votre application principale, vous pouvez écouter cet événement et lire le fichier correct. J'espère que cela t'aides.

La source
Translate

Je l'ai compris (enfin)

Composant personnalisé

<?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"/>

Le répéteur

<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>

Fonction de manipulation

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