2011-12-29 2 views
0

변수 값을 사용하여 객체를 참조 할 수 있습니까?

예를 들어 이미지를 숨기고 항목을 클릭하면 해당 이미지를 인벤토리 목록에 추가해야하는 기능이 있습니다.
모든 이미지 정보는 개체 (이름, imgSource, 표시, x, y)에 저장됩니다.

은 내가 이런 식으로 뭔가를 할 수 생각 : 나는 knife.visible 변경할 수 있도록
변수 값을 통한 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.xPos, 요법.
그럴 수 있습니까, 아니면 더 좋은 방법이 있습니까?

감사합니다.

답변

1

itemObject이어야합니까? 왜 형식이 ItemInfo 일 수 없습니까?

item이 (가) 클릭 된 knife 이미지를 참조하도록하려면 item = evnt.currentTarget도 작동해야합니다.

업데이트

TOOLINFO? 또는 ItemInfo?

어쨌든 evnt.currentTarget은 (는) 객체 유형입니다. 그것을 캐스팅하여 ItemInfo에 입력 해보십시오.

evnt.currentTarget as ItemInfo

+0

, 나는이 오류가 발생합니다 : 1118 : TOOLINFO : 관련되지 않은 유형의 구성 요소에 대한 정적 유형 개체와 값의 암시 적 강제. – jao

+0

내 업데이트를보고 제대로 작동하는지 확인하십시오. –

+0

그 중 하나가 작동하지 않았다 오류 : "visible"속성에 액세스 할 수 없지만 다른 방법을 찾아 냈습니다. 어쨌든 도움을 주셔서 감사합니다. – jao

0

클릭상의 객체의 값을 변경하는 가장 쉬운 방법은 단지 addItem를() 함수에 객체 자체를 전달하는 것이다. 이 문제는 내가 어떤 변수가 어떤 시간에 함수에 들어가는 지 미리 선택해야한다는 것입니다. 그러나이 목적을 위해 그것은 잘 작동합니다. 내가 "항목"유형 ItemInfo을하면

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