通过变量值引用Flex对象

时间:2011-12-29 02:39:11

标签: flex object reference

是否可以使用变量值引用对象?

例如,我有一个应该隐藏图像的功能,并在单击该项目时将该图像添加到库存清单中。
所有图像信息都存储在一个对象(name,imgSource,visible,x,y)中;

我以为我可以这样做:

<fx:Script>
    <![CDATA[
        public var item:Object = new Object();

        // name, imgSource, xPos, yPos, visible
        [Bindable]
        public var knife:ItemInfo = new ItemInfo('knife','knife.png',50,50,true);

        public function addItem(evnt:MouseEvent):void
        {
            // I want "item" to be equal to the object "knife"
            item = evnt.currentTarget.name;
            item.visible = false;
            inventory.addItem(item.name);
        }
    ]]>
</fx:Script>

<s:Image source="{knife.source}" name="knife" 
         x="{knife.xPos}" y="{knife.yPos}" 
         visible="{knife.visible}"
         click="addItem(event);" />

我希望“项目”代表刀具,以便我可以换刀。可见,刀.Pos等。
这是可能的,还是有更好的方法来做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:1)

为什么item必须是Object?为什么它不能是ItemInfo类型?

如果您希望item = evnt.currentTarget引用所点击的item图片,knife也应该有用。

<强>更新

ToolInfo?或ItemInfo?

无论如何evnt.currentTarget属于object类型。尝试将其强制转换为ItemInfo类型。

evnt.currentTarget as ItemInfo

答案 1 :(得分:0)

在单击时更改对象值的最简单方法是将对象本身传递给addItem()函数。这个问题是我必须在什么时候预先选择哪个变量进入函数,但为了这个目的,它的效果很好。

<fx:Script>
<![CDATA[
    public var item:Object = new Object();

    // name, imgSource, xPos, yPos, visible
    [Bindable]
    public var knife:ItemInfo = new ItemInfo('knife','knife.png',50,50,true);

    public function addItem(item:ItemInfo):void
    {
        item.visible = false;
        inventory.addItem(item.name);
    }
    ]]>
</fx:Script>

<s:Image source="{knife.source}" name="knife" 
     x="{knife.xPos}" y="{knife.yPos}" 
     visible="{knife.visible}"
     click="addItem(knife);" />