Interaction
디스플레이 객체가 어떤 컨테이너의 자식 디스플레이 객체인지 확인하는 방법
미나토
2015. 11. 2. 12:18
어떤 디스플레이 객체가 어떤 컨테이너 안에 속해있는지를 판단해야 할 때가 있습니다. as3 라면 contains 같은 메소드로 간단히 해결하겠지만, as2는 그렇지가 못하죠
하지만 다른 방법이 있습니다.
전역함수에 targetPath 라는 녀석이 있고, 디스플레이 객체의 경로를 반환하죠...
뭐 이런 겁니다...
var container:MovieClip = this.createEmptyMovieClip("container", 0); var mc:MovieClip = container.createEmptyMovieClip("mc", 0); trace(targetPath(container)) trace(targetPath(mc)) trace(targetPath(mc).indexOf(targetPath(container)) > -1)
이런 식으로 체크가 가능하지요...
위의 방법을 이해하셨다면 스케일폼에서는 응용해서 다음과 같은 것도 가능하겠지요
_global.gfxExtensions = true; var container:MovieClip = this.createEmptyMovieClip("container", 0); var containerPath:String = targetPath(container); var mc:MovieClip = container.attachMovie("mc", "mc0", 0); Mouse.addListener(this); this.onMouseUp = function():Void { var mc:MovieClip = MovieClip(Mouse.getTopMostEntity(true)), p:String; if(mc) { p = targetPath(mc); trace(p.indexOf(containerPath) > -1) } }
참고로 createEmptyMovieClip 로 생성된 자식은 다른 결과를 얻을 수 있으니 유의하셔야 합니다. getTopMostEntity(false) 로만 동작합니다