PDA

Просмотр полной версии : Добавить Video в TileList используя AS


AlexStukoff
11.03.2009, 19:43
Привет всем.
Во Flex я обучающийся, рылся весь день в livedocs, лазил между перекрестными ссылками, много читал про cellRender, itemRenderer, dataProvider и прочую-прочую-прочую. В итоге в голове каша и ЦЕЛЬНОГО представления как-же это все-таки работает так и нету.
Все таки документация и учебник это разные вещи :)
Посему - первое вопроса :)
- кто знает хороший учебник по работе с компонентами в Flex?

И второе вопроса собственно сабж. Если не трудно сопроводите примером :rolleyes:

Заранее спасибо.

PSы. Да, вот еще что. Добавляя в DataProvider объекты описывающие ячейки мы заполняем поля label, data. Далее менее очевидные: source и icon. Дополнительный вопрос - а где-нить вообще описано какие поля понимает TileList? Я просто фиг его знает, может у него есть специальное поле videoSource ?!?!?!?!

CrazyFlasher
11.03.2009, 19:56
файл аппликации

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

[Bindable]
private var videos:ArrayCollection = new ArrayCollection(["video.flv", "video.flv"])
]]>
</mx:Script>
<mx:TileList
rowCount="2"
itemRenderer="VideoItem"
dataProvider="{videos}"
>
</mx:TileList>
</mx:Application>


itemRenderer VideoItem.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

]]>
</mx:Script>

<mx:VideoDisplay
source="{data}"
>
</mx:VideoDisplay>
</mx:Canvas>

AlexStukoff
12.03.2009, 11:50
Ну вот, это повторилось. Снова :) :) :)
Спасибо за помощь, но примеров как это сделать через mxml - море бездонное.
Как это сделать в AS-коде?
Т.е. предположим MyTileList это компонент TileList.

var userlistVideo:ArrayCollection = new ArrayCollection();
var myVideo:Video = new Video();
userlistVideo.addItem({label:"Камера"});
MyTileList.itemRenderer = new ClassFactory(MyVideoItemRender);

Соответственно MyVideoItemRender это отдельный класс как я понимаю

package
{
public class MyVideoItem
{
}
}

Ура, ура :) И чего теперь с ним делать? :)
Как прописать itemRenderer и что такое VideoItem в примере? Новый компонент? Новый класс?

itemRenderer класса IFactory. ...The TileList and HorizontalList class use TileListItemRenderer... Cмотрим TileListItemRenderer :) У него есть свойства:

data : Object
The implementation of the data property as defined by the IDataRenderer interface.
listData : BaseListData
The implementation of the listData property as defined by the IDropInListItemRenderer interface.

и защищенные свойства
icon : IFlexDisplayObject
The internal IFlexDisplayObject that displays the icon in this renderer.
label : IUITextField
The internal UITextField that displays the text in this renderer

Круто, не правда-ли? :) В описании черным по белому написано:
You can override the default item renderer by creating a custom item renderer.

Охотно верю, что я могу. Вопрос в том - КАК?!?!?! *бьюсь об стену*
Короче при чтении документации возникает больше вопросов чем ответов. Это как расписать каждую деталь часов, но не объяснить как их соединить вместе чтобы эти часы пошли :)

Объясните кто-нить как это работает, хоть примером, хоть текстом, хоть ссылкой на учебник :) Хоть как-нить :)

†‡Paladin‡†
12.03.2009, 12:00
Почитай этот pdf-ник. Может поможет.
http://www.scribd.com/doc/6901091/flex2createextendcomponents

AlexStukoff
12.03.2009, 12:06
Грац Паладин :) Изучаю :)

Добавлено через 4 часа 39 минут
Но вопрос в любом случае не закрыт, увы :(

И, да, уважаемый CrazyFlasher продемонстрировал подключение flv-видео в статике так сказать, а речь идет о подключении экземпляров класса Video() в динамике.