여러 장면에서 인스턴스로 반복적으로 삽입되는 버튼 심볼이 있습니다. 이 버튼은 장면을 장면으로 연결하며 기본적으로 동일한 기능을 실행합니다.인스턴스 대신 인스턴스에 심볼 리스너를 추가하는 방법 as3
eventListener MouseEvent.CLICK를 심볼 자체에 추가하여 각 장면의 각 인스턴스마다 리스너를 다시 작성할 필요가 없습니까?
여러 장면에서 인스턴스로 반복적으로 삽입되는 버튼 심볼이 있습니다. 이 버튼은 장면을 장면으로 연결하며 기본적으로 동일한 기능을 실행합니다.인스턴스 대신 인스턴스에 심볼 리스너를 추가하는 방법 as3
eventListener MouseEvent.CLICK를 심볼 자체에 추가하여 각 장면의 각 인스턴스마다 리스너를 다시 작성할 필요가 없습니까?
심볼 (예 : Class
)에서 마우스 이벤트를 수신하거나 이벤트를 전달할 수 없습니다. 그래서 그것은 의문의 여지가 있습니다.
새 스프라이트 심볼을 만들고 그 안에 사용자 정의 Button을 배치 한 다음 해당 스프라이트 내부의 프레임 스크립트에 리스너를 추가 할 수 있습니다.하지만 정말 엉망입니다.
이것을 수행하는 가장 깨끗한 방법은 Stage에 Event.ADDED의 수신기를 추가하는 것입니다.이 단계는 표시 목록의 아무 곳에 나 새로운 인스턴스 인 DisplayObject
이 추가 될 때마다 캐치됩니다. 핸들러 함수를 사용하여 적절한 수신기를 추가합니다. 특수 버튼의 각 인스턴스 :
function onInstanceAdded(event:Event) : void {
if(event.target) is MySpecialButton
event.target.addEventListener(MouseEvent.CLICK, onSpecialButtonClick);
}
function onSpecialButtonClick(event:MouseEvent) : void {
doMagicStuffHere();
}
stage.addEventListener(Event.ADDED, onInstanceAdded);
'LinkingButton'과 같은 클래스를 만듭니다. 이 클래스 안에는 원하는 작업을 수행하는 클릭 핸들러가 있습니다.
그러면 클래스를 라이브러리의 심볼에 '연결'해야합니다.
올바르게 완료되면 심볼을 스테이지로 드래그해야하며 곧바로 작동합니다. 또는 코드를 사용하기를 원한다면 간단 할 수도 있습니다 :
var myButton:LinkingButton = new LinkingButton();
addChild(myButton);