0

私のプロジェクトにカスタムを実装する必要がありcell rendererます.Googleで検索しましたが、必要なものが見つかりませんでした.

2つのアイコンをいくつか表示するcellには、それぞれが必要です。それを始めるには良い例が必要です。tile listlabels

可能であれば、テンプレートを として設計し、MovieClipそれをタイルリストに渡してセルをレンダリングする方法が必要です。

4

2 に答える 2

0

カスタム セル レンダラーを構築するには、利用可能なlistClassesから選択したクラスを拡張する必要があります。ImageCellは、プロジェクトの良いスタートのようです。

するでしょう:

  1. リストクラスを拡張する
  2. 独自のビットを追加します(ラベル/テキストフィールドなど)
  3. 保護された関数をオーバーライドして、必要に応じて新しいセルを調整します (例として、アイテムをきちんと配置する必要がある 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);
        }
    }
}

必要なもののかなり良い例は、この投稿にあります。そこに提供されているカスタムセル:

  1. カスタム背景をサポート (セル スキンを設定することにより)
  2. ラベル TextField を使用します。

HTH

于 2010-07-12T14:12:19.203 に答える
-2

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" ... />
于 2010-07-12T13:39:41.363 に答える