如何将spark组件添加到mx扩展自定义itemrenderer?

时间:2010-11-14 12:00:19

标签: actionscript-3 flex air mxml

嘿所有,我 我已经在一个航空应用程序上工作了很长一段时间,在我的一个mx:列表中我有一个用纯AS编写的自定义渲染器(没有mxml)。 它扩展了listitemrenderer mx componentsnet。 在其中我已经覆盖了createChildren()函数来添加我自己的一些子项。

现在,我希望在这个itemrenderer中使用从右到左的文本,我想在这个createChildren()函数中添加一个spark:TextArea组件

有办法吗?

这是itemRenderer:

import flash.text.TextField;

import mx.controls.listClasses.ListItemRenderer;

import spark.components.TextArea;

public class MySumTileIR2 extends ListItemRenderer
{
    public function MySumTileIR2()
    {
        super();
    }

    override protected function createChildren():void {
        super.createChildren();
        label.visible = false;

        var tf:TextField = new TextField();
        tf.text = "this is a TextField";
        this.addChild(tf);
        var ta:TextArea = new TextArea();
        ta.text = "this is a Spark TextArea"; 
        this.addChild(ta);
    }
}

这是它的所有者:

<mx:Panel id="MTGpicsPanel" label="totalPics" title="{totalPics}" height="100%" horizontalAlign="right">
   <mx:List width="100%" top="18" bottom="18" left="18" right="18" id="MTGpicsList" x="0"y="0" height="100%" variableRowHeight="true" editable="false" dataProvider="{chosenPics}"  doubleClick="gotoPic();" doubleClickEnabled="true" itemRenderer="MySumTileIR2"/>
</mx:Panel>

运行这个我看到文本字段而不是textarea

1 个答案:

答案 0 :(得分:0)

你有什么问题吗?

在createChildren()内部,执行以下操作:

var ta : spark.components.TextArea = new TextArea();
this.addChild(ta);

我从来没有用Spark TextArea做过,但是我用BorderContainer完成了它,并且它在很大程度上运行良好。我无法让BorderContainer显示在UIComponent或Container上,但它在Canvas上运行良好。您可能遇到类似的问题w / TextArea。