是否可以使用变量值引用对象?
例如,我有一个应该隐藏图像的功能,并在单击该项目时将该图像添加到库存清单中。
所有图像信息都存储在一个对象(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等。
这是可能的,还是有更好的方法来做到这一点?
谢谢!
答案 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);" />