События компонентов Adobe Flex
-
08-06-2019 - |
Вопрос
Я написал компонент, который отображает имя файла, его миниатюру и имеет кнопку для загрузки/воспроизведения файла.Компонент привязан к репитеру.Как я могу сделать так, чтобы событие кнопки запускалось в основном приложении и сообщало ему, какой файл воспроизводить?
Решение
В вашем пользовательском компоненте вы можете прослушивать событие нажатия кнопки, а затем генерировать пользовательское событие, содержащее информацию о файле, который вы хотите воспроизвести.Затем вы можете установить для свойства bubbles значение true и отправить пользовательское событие из вашего пользовательского компонента.Свойство bubbles заставит ваше событие всплывать в списке отображения и достигать вашего основного приложения.Теперь в вашем основном приложении вы можете прослушать это событие и воспроизвести правильный файл.Надеюсь это поможет.
Другие советы
Разобрался (наконец-то)
Пользовательский компонент
<?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());
}