2011-12-29 53 views
0

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

例如,我有一个应该隐藏图像并在点击该项目时将该图像添加到清单列表的功能。
所有的图像信息存储在一个对象(名称,imgSource,可见,x,y);

我想我可以做这样的事情:
通过变量值的Flex对象引用

<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);" /> 

我想“项目”放置刀,这样我可以改变knife.visible,knife.xPos,等。
这是可能的,还是有更好的方法来做到这一点?

谢谢!

回答

1

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

,如果你想item引用被点击的knife形象也item = evnt.currentTarget应该工作。

更新

TOOLINFO?或ItemInfo?

无论如何evnt.currentTarget是类型的对象。尝试将其转换为输入ItemInfo。

evnt.currentTarget as ItemInfo

+0

如果我做“项目”一类ItemInfo,我得到这个错误: 1118:TOOLINFO:静态类型对象的值可能无关的类型组件的隐式强制。 – jao 2011-12-29 08:19:52

+0

查看我的更新并检查它是否可用。 – 2011-12-29 15:21:35

+0

也没有工作 错误:无法访问属性“可见”,但我想我找出了一个不同的方式来做到这一点。 感谢您的帮助 – jao 2011-12-29 20:35:43

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);" />