Я написал компонент, который отображает имя файла, миниатюру и имеет кнопку для загрузки / воспроизведения файла. Компонент привязан к данным ретранслятора. Как я могу сделать так, чтобы событие кнопки запускалось в основном приложении и сообщало ему, какой файл воспроизводить?





Разобрался (наконец)
Пользовательский компонент
<?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"/>
Повторитель
<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>
Функция обработки
private function PlayFile(fileName:String):void{
Alert.show(fileName.toString());
}
В своем настраиваемом компоненте вы можете прослушивать событие нажатия кнопки, а затем сгенерировать настраиваемое событие, содержащее информацию о файле, который вы хотите воспроизвести. Затем вы можете установить для свойства пузырьков значение true в событии и отправить настраиваемое событие из настраиваемого компонента. Свойство пузырьков заставит ваше событие всплыть вверх по списку отображения и достигнет вашего основного приложения. Теперь в главном приложении вы можете прослушать это событие и воспроизвести нужный файл. Надеюсь это поможет.