2011-05-16 2 views
2

다른 movieclip 요소 ("endLogoButton")에 동영상 클립 요소 ("lastSlide")를 추가하고 있습니다. 추가 된 요소에는 버튼 ("endLogoButton") 인 하위 항목이 있습니다. 어떻게 그 단추를 부를 수 있니? 내가 주변에 어려움을 겪고있어 초보자로서 AS3이 방금 추가 한 요소를 호출합니다.

mcSlideHolder.addChild(lastSlide); 
    /*mcSlideHolder.getChildByName("endLogoButton").buttonMode = true;; 
    mcSlideHolder.getChildByName("endLogoButton").mouseChildren = false; 
    mcSlideHolder.getChildByName("endLogoButton").useHandCursor = true;*/ 
    lastSlide.endLogoButton.addEventListener(MouseEvent.CLICK, linkClick); 

...하지만 그것이 작동 할 수 없습니다 ... 그것은 항상 Nullobject 참조에 대한 접근이 불가능하다는 것을 알려줍니다.

어떤 조언을 주셔서 감사합니다!

+0

3 줄의 주석 처리를 제거했거나 위의 코드를 그대로 사용하면이 문제가 발생합니까? 내가 주석 라인이 오류를 던질 이유를 알 수 있습니다. – Corey

+0

mcSlideHolder 및 lastSlide가 아직 인스턴스화되어 있습니까? –

+0

@Corey : 주석 처리되지 않고 주석없이 오류없이 버전이 있습니다 :-( – haemse

답변

3

단추 인스턴스로 이동하기 위해 중첩 된 개체를 '파고'할 수도 있고, 부모 인스턴스에 추가하기 전에 이벤트 인스턴스를 추가하여 클릭 이벤트를 버블 링 할 수도 있습니다.

내 안에 무엇이 중첩되어 있는지 이해하는 데 어려움을 겪고 있지만 getChildByName을 시도하고 있음을 알 수 있습니다. getChildByName은 인스턴스 이름 (변수 이름 아님)에 따라 직접 자식 (자식의 자식이 아님) 만 가져옵니다.

예 : lastSlide.getChildByName ("endLogoButton"). addEventListener (MouseEvent.CLICK, linkClick);

또는

lastSlide.name = "myLastSlide"; mcSlideHolder.getChildByName ("myLastSlide"). getChildByName ("endLogoButton"). addEventListener (MouseEvent.CLICK, linkClick);

lastSlide가 Flash IDE에서 스테이지에 시각적으로 배치 된 경우 as3에 name 속성을 설정하지 않고 속성 패널에 myLastSlide 인스턴스 이름을 설정할 수 있습니다.

+0

그게 다야! 도와 줘서 고마워요! – haemse

+0

그러나 내가 할 수없는 이유는 다음과 같습니다. lastSlide.endLogoButton – haemse

+0

lastSlide는 'endLogoButton'이라는 알려진 속성이없는 MovieClip 유형이므로 사용자가 할 수 없습니다. 해당 객체가 있다는 것을 알고 있습니다. 그러나 MySlide라는 자체 클래스를 만들어 MovieClip을 확장하고 endLogoButton이라는 공용 속성을 제공하면 원하는 것을 수행 할 수 있습니다. –

2

아니면 :

MovieClip(mcSlideHolder.getChildByName("lastSlide")).getChildByName("endLogoButton").addEventListener(MouseEvent.CLICK, linkClick); 
분명히에 추가 된 무비 클립을 참조 할 때 "가능한 참조되지 않은 객체"오류가 팝업 때 나를 위해 여러 번했다

: 같은 무비 클립에 "lastSlide"를 캐스팅하려고 무대

관련 문제