2013-08-16 6 views
0

루트 클래스의 이벤트를 활성화하는 거품 형 이벤트가 있습니다. 루트 클래스에서 버블 링 된 이벤트를 활성화 한 객체의 속성을 사용하려는 객체를 추가합니다. 나는이 코드를 사용하여이 작업을 수행 :버블 링 대상 또는 속성?

public function addInfoWindow(e:Event):void 
{ 
    dockTarget = e.target as DisplayObject; 
    infoWindow = new InfoWindow(); 
    addChild(infoWindow); 
    infoWindow.setContent(dockTarget.x, dockTarget.y, dockTarget._id, dockTarget._name, dockTarget._description); 
} 

x 및 y 값이 잘 전달받을 있지만, 속성 _ID와 함께, _name 및 _description 나는 정적 DisplayObject 형 참조를 통해 정의되지 않은 속성 _id의 "액세스 할 수 있습니다. " 오류.

나는 eventObject를 displayObject로 전달할 때 대상 객체가 정적이되었다고 가정합니다.

개체 또는 속성을 버블 링하는 또 다른 방법이 있습니까? 아니면이 효과를 얻기위한 다른 방법이 있습니까?

+0

dockTarget이 예상 한 개체인지 확인하는 것이 좋습니다. 또한, eventListener를 어디에 추가합니까? dockTarget이라면 e.currentTarget을 사용하고 싶습니까? – Marijn

+0

dockTarget에 dockTarget.hasOwnProperty ('_ id') – Marijn

+0

이있는 _id 등의 속성이 있는지 확인할 수 있습니다. 올바른 개체를 얻었으며 속성에 _id가 있습니다. 나는 그것을 마침내 해결했다. displayObject를 사용하는 대신 객체를 사용했습니다. – Banzboy

답변

0

e.target을 DisplayObject로 전달하는 대신 Object로 전달하십시오.

public function addInfoWindow(e:Event):void 
{ 
    dockTarget = e.target as Object; 
    infoWindow = new InfoWindow(); 
    addChild(infoWindow); 
    infoWindow.setContent(dockTarget.x, dockTarget.y, dockTarget._id, dockTarget._name, dockTarget._description); 
} 
+1

'Object' 로의 캐스팅이 작동하는 동안,'e.target'이 하나 인 경우'MovieClip'으로 캐스팅하는 것과 같이 일반적으로'if (e.target is OneClass) {를 통해 해당 유형을 쿼리하는 것이 좋습니다. ..}''OneClass' 클래스의 속성에 접근 할 수 있습니다. 예를 들어 로컬 타임 라인을 사용할 필요가없는 경우와 같이 'MovieClip'이외의 다른 것을 확장하는 경우에 특히 유용합니다. – Vesper

+0

정말 편리합니다. 감사합니다! – Banzboy