2013-07-22 3 views
1

프로젝트에서 여러 개의 중첩 된 무비 클립 개체로 작업하고 있습니다. 하지만 난 내가 만든 중첩 된 동영상 클립에 구현 된 버튼을 곤경에 얻을 :as3 프레임을 입력하여 새 인스턴스가 생성되는 것을 방지하려면 어떻게해야합니까?

간단한 방법으로 그것을 설명하기 위해 : 나는 프레임 사이에 찾아 청취자와 두 개의 버튼 등 5 개 프레임과 메인 무비 클립이 있습니다. 그런 다음 하나의 프레임 안에 다른 버튼이있는 동영상 클립이 있습니다. 코드를 통하지 않고 손으로 인스턴스화했으며 "nestedMc"와 같은 구체적인 이름을 지정했습니다.

이제는 중첩 된 무비 클립 클래스의 클래스 안에있는 버튼에 대한 리스너를 작성하고 싶지 않지만 상위 영화 클립 타임 라인에서 다른 프레임으로 이동하여 돌아올 때까지 작동하는 상위 클래스에이 리스너를 작성하고 싶지 않습니다.

분명히 플래시가 프레임에 입력 될 때마다 그 내용이 새로 생성되어 새로운 인스턴스 이름을 얻습니다. 이제 코드를 통해 프레임을 채우는 방법으로이 문제를 해결할 수 있습니다.

하지만 입력 할 때마다 프레임에 동일한 인스턴스가 포함되어 있는지 확인하는 다른 방법이 있습니까?

+1

타임 라인에 코드 작성을 중지하십시오. '.as' 파일을 사용하는 법을 배우십시오. – Pier

답변

1

타임 라인 스크립팅은 더러운 사업이며 실제로는 carry-over compatibility layer for Actionscript 2 projects입니다. 가능할 때마다, 그렇게하지 않고 모든 코드를 문서 클래스에 보관하는 것이 좋습니다. 겪고있는 타임 라인 코드로 인해 두통이 생깁니다.

대신 Stage의 두 상태 (두 개의 버튼 사이에서 점프하는 것 같은 느낌)를 만들고 무대 위를 숨기거나 알파를 0으로 설정하고 mouseEnabled 상태를 false로 설정하는 것을 고려하십시오. 또한 프레임의 목적이 애니메이션 (트윈)을 재생하는 것이라면 TweenLite과 같은 훨씬 강력한 제품군으로 전환하는 것이 좋습니다. (부드럽게) 백 픽셀 이상의 객체를 이동하면 쉽게 할 수 있습니다와 같은 :

TweenLite.to(redBall, 3, {x:100}); 이제

, 수동으로 한 객체가 동적 하나이기 때문에, 무대에 이러한 항목을 추가하는 경우 프레임로드간에 저장 될 인스턴스 이름을 지정할 수 있습니다. 오브젝트 이름이 인스턴스 이름과 같지 않음을 알아 두십시오. 예를 들어 :

var redBall:Ball = new Ball(); 
redBall.name = "bubbles"; 

개체의 이름은 Ball이지만 redBall라는 변수로 표현합니다. 실제 DisplayList 이름은 모호 할 수 있습니다 (예 : "Instance71"). 수동으로이를 "bubbles"으로 정의 할 수 있습니다. 같은 대상에 대해 서로 다른 3 개의 이름. 모두 매우 다르거 나 필요합니다.

개체에 displayList 이름을 지정해도 기본적으로 각 개체에 displayList 개체에 대한 포인터를 만드는 무대 인스턴스 자동 선언을 사용하도록 설정하지 않으면 코드를 통해 개체를 참조 할 수 없습니다.

As seen in your project settings

당신은 항상 다른 방법으로 개체를 가져올 수 말했다. 물론 버튼은 항상 나타나지만 무대에서 매우 구체적인 객체를 찾으려고합니다. 이 시점에서 getChildByName() 또는 getChildAt()을 사용할 수 있습니다.

희망이 있습니다. - 발가락

+0

감사합니다.타임 라인에 코드를 쓰고 있지 않습니다 (여전히 가능하다는 것을 알지 못했습니다). 이 문제는 이름 속성과 인스턴스 이름의 차이에 대한 필자의 이해가 부족하여 파생되었습니다. 그 점을 지적 해 주셔서 고맙습니다! – gauguerilla

관련 문제