scaleform.minarto.com

hitTest 쓰지 마세요... 본문

Interaction

hitTest 쓰지 마세요...

미나토 2015. 10. 29. 19:26

음...


게임회사의 as2 코드들을 보면 hitTest 를 사용해서 툴팁을 구현하려는 경우가 많아요...


하지만 hitTest 는 아시다시피 연산이 엄청 들어가죠...


그래서 다음과 같은 방법은 어떨까요???


import gfx.controls.Button;

_global.gfxExtensions = true;
		
var container:MovieClip = this.createEmptyMovieClip("container", 0);

function onEnter()
{
	var btnPrev:Button;
	
	onEnter = function()
	{
		var btn:Button = Button(Mouse.getTopMostEntity());

		if(btn)
		{
			if(btn != btnPrev)
			{
				if(btnPrev)
				{
					trace("rollOut " + btnPrev);
				}
				trace("rollOver " + btn);
			}
		}
		else
		{
			if(btnPrev)
			{
				trace("rollOut " + btnPrev);
			}
		}
		btnPrev = btn;
	}	
}
onEnter();

container.onEnterFrame = onEnter;



물론 퍼포먼스 테스트는 안했습니다 :)


하지만 아마도 hitTest 보다는 성능이 나을 것이고...

이벤트 추가 삭제를 안하니, 메모리 관리에도 뛰어날 겁니다


암튼 이 방식으로 처리하면, 버튼마다 이벤트 핸들러 등록과 해지가 필요없습니다.


마치 as3 에서 컨테이너에만 버튼 이벤트를 추가해서 target 으로 받는 것과 마찬가지 입니다.