Как создать пользовательский рендерер ячеек для списка плиток во Flash
Мне нужно реализовать кастом cell renderer
В моем проекте я провел поиск в Google, но не смог найти то, что мне нужно.
Мне нужен каждый cell
в tile list
отображать 2 иконки с парой labels
, Мне нужен хороший пример, чтобы начать это.
Если возможно, мне нужен способ разработать шаблон как MovieClip
и передать его в список листов для визуализации ячеек.
2 ответа
Для создания собственного средства визуализации ячеек вам необходимо расширить класс выбора из доступных списков классов. ImageCell выглядит как хорошее начало для вашего проекта.
Ты бы:
- Расширить список классов
- добавьте свои собственные биты (метки /TextField и т. д.)
- переопределите защищенные функции, чтобы настроить новую ячейку в соответствии с вашими потребностями (например, метод drawLayout, в котором вам нужно аккуратно расположить элементы).
Вот очень простой пример:
package
{
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ImageCell;
import fl.controls.TileList;
import fl.data.DataProvider;
import fl.managers.StyleManager;
import flash.events.EventDispatcher;
import flash.events.*;
import fl.containers.UILoader;
public class CustomImageCell extends ImageCell implements ICellRenderer
{
public function CustomImageCell()
{
super();
//do other stuff here
loader.scaleContent = false;
loader.addEventListener(IOErrorEvent.IO_ERROR, handleErrorEvent, false, 0, true);
useHandCursor = true;
}
override protected function drawLayout():void
{
var imagePadding:Number = getStyleValue("imagePadding") as Number;
loader.move(11, 5);
var w:Number = width-(imagePadding*2);
var h:Number = height-imagePadding*2;
if (loader.width != w && loader.height != h)
{
loader.setSize(w,h);
}
loader.drawNow(); // Force validation!
}
override protected function handleErrorEvent(event:IOErrorEvent):void {
trace('ioError: ' + event);
//dispatchEvent(event);
}
}
}
Довольно хороший пример того, что вам нужно, находится в этом посте. Там пользовательская ячейка:
- Поддерживает пользовательский фон (путем установки скина ячейки)
- Использует метку TextField.
НТН
Создайте файл с именем MyRenderer.mxml, вставьте это:
<?xml version="1.0" encoding="utf-8"?>
<mx:Box xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Image id="img" width="123" height="123" />
<mx:Script><![CDATA[
override public function set data (value:Object):void {
super.data = value;
// mess with img here
}
]]></mx:Script>
</mx:Box>
в списке плиток напишите это:
<mx:TileList itemRenderer="MyRenderer" ... />