actionscript-3 - 在 itemrenderer 中操作数据对象 - Adob​​e Flex 4

标签 actionscript-3 flex4 adobe

我有一个简单的 Itemrenderer,其代码如下:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
autoDrawBackground="true" width="90" height="90">
<s:VGroup horizontalAlign="center">
 <mx:Image source="{data.photo}" toolTip="{data.name}" />
</s:VGroup>
</s:ItemRenderer>

我想在将数据对象绑定(bind)到图像属性(源和工具提示)之前对其进行操作。为此,我按如下方式修改了代码:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
autoDrawBackground="true" width="90" height="90"
initialize="itemrenderer1_initializeHandler(event)">
 <fx:Script>
 <![CDATA[
 import mx.events.FlexEvent;


 protected function itemrenderer1_initializeHandler(event:FlexEvent):void
  {
    var obj:Object = this.data;
    //here the manipulation
  }

 ]]>
 </fx:Script>
 <s:VGroup horizontalAlign="center">
 <mx:Image source="{data.photo}" toolTip="{data.name}" />
 </s:VGroup>
</s:ItemRenderer>

当我尝试访问 this.data 对象时,它总是空的!有没有办法在绑定(bind)之前操作数据对象?也许我不必使用 this.data,但我找不到任何其他要编辑的对象

最佳答案

另一种解决方案是重写设置数据函数,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" 
            xmlns:mx="library://ns.adobe.com/flex/mx" 
            autoDrawBackground="true" width="90" height="90"
           creationComplete="itemrenderer1_creationCompleteHandler(event)"
            >
<fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;
        import valueObjects.Product;
        [Bindable]
        private var prd:Product;

        override public function set data(value:Object):void
        {
           super.data = value;
           //here i can access to the this.data object!
           this.prd = this.data as Product;
        }

    ]]>
</fx:Script>
<s:VGroup horizontalAlign="center">
    <mx:Image source="{prd.photo}" toolTip="{prd.name}" width="70" />
    <mx:Label text="{prd.name}"/>
</s:VGroup>

关于actionscript-3 - 在 itemrenderer 中操作数据对象 - Adob​​e Flex 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4803575/

相关文章:

actionscript-3 - Flex 4 : State Change Event

actionscript-3 - AS3/Flex 性能 - 新的 ArrayList 与 ArrayList.removeAll()

air - Adobe Air 是完全免费的吗?

forms - 将 XFA 表单导入 AEM,更改事件处理程序不会触发

android - 我可以将 c++ 库包装到移动 IOS/Android 的 Adob​​e Air native 扩展吗

apache-flex - Flex - 垂直放置水平 HBox 的子项

actionscript-3 - Flex AIR - IntelliJ 中的 application.xml 在哪里

java - 如何找到控制点贝塞尔曲线

java - 如何在java Enum类中存储Flex文本框值?

apache-flex - 在 mxml 组件之间共享变量