본문 바로가기
flex- off

flash skin , skin 자체를 flash에서 timeLine 에 프레임을 주었을 때 DoubleClick Event

by 엉금둥이 2010. 5. 20.
안녕하세요. 두번째로 글을 쓰네요^^

이번에는 flex 에서 skin으로 사용하기 위해, flash 에서 symbol로 만들어서 사용할 때. Mouse DoubleClick Event 가 문제되는 것에 대해서 써보려 합니다.

flash 에서 symbol로 skin을 만들 때, skin 자체에 timeLine 에 프레임을 삽입하여 애니메이션을 계속주는 경우와, 그렇지 않고, 일반 이미지처럼 멈춰있는 skin이 있습니다.

머 일단 말보단 skin 이미지를 보시죠


이렇게 왼쪽에는, 무언가 액션이 들어가있는 skin, 오른쪽에는 액션이 없는 skin^^
오른쪽꺼는... 제가 그린거라... 최대한 왼쪽이랑 똑같이 그린다고... 훕...

아무튼 2가지 종류의 스킨이 있습니다.

이제 여기다가 각자 mouseClick 과 DoubleClick 을 걸어보고 click 할 때 event.target 과 doubleClick 할 때 event.target 정보를 아래 화면을 통해 테스트 해봅시다.

해보시면, 왼쪽의 skin에서는 doubleClick 이 제대로 안 먹히는 걸 볼 수 있으실겁니다. 반면 오른쪽 click은 잘 되죠^^

 
스킨을 이쁘게 꾸며서 넣었는데... 이 처럼 doubleClick 이라는 요구사항이 왔을경우... 저 같은 초보자들은... 눈물을 흘립니다.. 왜냐면.. 안되자나요!

그래서 이곳저곳에 doubleClickEnabled = true를 주며 확인을 해봤지만 안됐습니다.

그래서 관심을 flash쪽으로 돌려서 두 skin의 차이점을 생각해본 후, timeLine 작업을 생각해 봤습니다.

"skin이 계속 enterFrame이 돌기 때문에 잡지 못하는 것일까..." 라는 생각과 이것저것... 해볼만한 짓을 다 해봤죠... 

그러다가 "아 clickEvent 에서 target을 살펴보자!" 라는 생각과 함께 살펴보았습니다.

event.target.doubleClickEnabled = false !! 라고 되어 있더군요...

위에 예제화면 보시면 왼쪽 skin에 클릭했을 때, Object MovieClip 라고 보셨을 겁니다. 못보셨다면 클릭해서 한번 확인해보세요.

target이 Object MovieClip라... 생각을 해보면 skin도 무비를 재생하고, timeLine을 제어하기 시작하면 target은 Object MovieClip라 바뀌는 것 같다는 생각도 들더군요..

아직 실력이 부족해서 원론적으로는 해결하지 못했지만... 부분적으로나마 꼼수? 로 doubleClick을 돌아가게 했습니다

그에 해당하는 소스는

protected function image1_clickHandler(event:MouseEvent):void
   {
       if (!event.target.doubleClickEnabled)
    {
        event.target.doubleClickEnabled = true;
    }
   }

click했을 때, event.target.doubleClickEnabled 를 true로 셋팅을 하는 겁니다. 부가적인 설명을 아래에서 하고, 일단 되는 화면을 보실까요?




doubleClick이 잘 되죠?

if (!event.target.doubleClickEnabled)

    {
        event.target.doubleClickEnabled = true;
    }
 반복적으로 doubleClickEnabled를 true로 재설정 하는 것을 막기위하여, if문을 써서 막았지만, keyFrame 때마다 초기화가 되는 것인지, 제대로 막는다고 하지는 못하겠네요..

그래도 저처럼 고민하다가 포기하는 사람들이 생길까봐... 꼼수라도 부려서 올릴 수 있는 방법을 올려봅니다.

아 그리고... "UIComponent 를 이미지 크기만큼 잡고, 색을 채우고 alpha를 0으로 주면 되는것을 머하러 event를 더 늘려서 해??" 라고 하시면 저는... 할말이 없네요^^;; flex4와 cs5에서는 어떻게 적용되고 있는지는 아직 안해서 모르지만...

다른 방법이 있다면.. 고수분들... 코맨트좀 달아주세요 후..

글 쓰기가 참 힘드네요.. 말주변도 없고~ 글재주도 없고~

그저 도움이 되었으면 합니다

예제파일도 같이 첨부해서 올리겠습니다

'flex- off' 카테고리의 다른 글

몇가지 퍼포먼스  (2) 2010.07.23
flex로 calender를 만들때, 해당하는 달의 날짜 구하기?  (1) 2010.05.17