2011-12-29 3 views
0

Возможно ли ссылаться на объект с использованием значения переменной?

Например, у меня есть функция, которая должна скрыть изображение и добавить это изображение в список инвентаря при щелчке элемента.
Вся информация об изображении хранится в объекте (имя, imgSource, visible, 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 = evnt.currentTarget должен работать, если вы хотите, чтобы item ссылается на изображение knife, которое было нажато.

Update

TOOLINFO? или ItemInfo?

В любом случае evnt.currentTarget имеет тип объекта. Попробуйте ввести его, чтобы ввести ItemInfo.

evnt.currentTarget as ItemInfo

+0

Если я сделать «пункт» а тип ItemInfo, я получаю эту ошибку: 1118: Неявное приведение значения со статическим типом объекта к, возможно, не связанных между собой компонентов типа: TOOLINFO. – jao

+0

Посмотрите мое обновление и проверьте, не работает ли оно. –

+0

, который не работает ни Ошибка: не удается получить доступ к свойству «видимый», но, я думаю, я сделал другой способ сделать это. Спасибо за помощь в любом случае – jao

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);" /> 
Смежные вопросы