2011-12-29 19 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);" />