분류 전체.. (283)
일기 (124)
Flash Plat.. (101)
Scaleform (43)
JavaScript (3)
etc (12)
비공개 (0)
as3  scaleform  스케일폼  as3.0  CLIK  flash cs3  클릭  scaleform3  scaleform4  강좌 
 gmlmcklc
└>gmlmcklc
 비 익스플로러..
└>미나토
 비 익스플로러..
└>미나토
 Flash CS3, Fl..
└>iamyhs
 더 공부해
└>iamyhs
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
+ 다니는 회사
+ 내가 1년전까..
+ 내가 2년전까..
+ twitter
+ facebook
+ flex sdk
+ Total : 57,641
+ Today : 89
+ Yesterday : 96
  

 

 

 

2012/02 _해당되는 글 15건
16:44:20   Document Class, _level0 사용하지 않기 - 플래시의 디스플레이 구조 파악하기  
2012/02/21   Object Pooling in as2  (3)
2012/02/20   고인의 명복을 빕니다 
2012/02/20   이미지 로드 및 관리 
2012/02/17   CLIK 9 - Window 

 

Document Class, _level0 사용하지 않기 - 플래시의 디스플레이 구조 파악하기
+   [Scaleform]   |  2012/02/23 16:44  


오늘 한국 AutoDesk 사로부터 좋은 소식을 들었습니다.

아마도, 이에 대해서는 차차 글을 올릴 일이 생길겁니다.
어쨌든 CLIK 폭주 포스팅 이외에 지금 글을 올릴 타이밍이 아닌데 감사 포스팅 하나를 써야겠다는 생각이 들었네요...

그럼 각설하고... ㅋㅋㅋ


1. 뭐라는 거냐? 타임라인 코딩하라고?

제목부터 충격적입니다.


Document Class 를 사용하지 말라니, 타임라인에 코드를 작성하란 소리인가? 라고 생각하시는 분이 계실지 모릅니다.
당연히 아닙니다.

Document Class 를 사용하되 Document Class 컨테이너를 쓰지 않는 방법(?)을 말하고자입니다.

as2에 익숙하신 분은 더 쉽게 받아들이실지도 모르겠네요. _level 을 사용하는 법을 말하려는 겁니다.


여러분이 만드는 as3의 Document Class 는 바로 root 입니다. as2에서는 메인 타임라인이 바로 _root 이자 _level0 입니다.

그런데 그 윗단계의 컨테이너가 있다는 걸 아십니까? 바로 Stage 입니다.



2. 시작점 클래스


전에 scaleform 과 flash player 를 동시에 지원하는 Document class 만들기 라는 포스팅에서 시작점 클래스에 대해서 말한 적이 있습니다.

그 때도 말했지만 다시 한번 간단히 짚고 넘어가보죠.

플래시 실행순서를 볼까요?

1. 플래시 / 스케일폼 vm이 실행된다
2. swf 를 로드한다
3. swf 안의 시작점 클래스의 생성자 함수로 객체를 만들어 stage 에 addChild 한다. 이 순간 Event.ADDED_TO_STAGE 이벤트가 발생한다

순서를 간략히 줄여서 말했으니 자세한 글은 hika 님의 글을 읽어보시기 바랍니다.


자, addChild 를 한답니다. Sprite 에 addChild 하는 것과 똑같지 않나요? stage도 똑같은 DisplayObjectContainer 라는 얘기입니다.
그러면 꼭 Document Class 만 addChild 될까요? 아니죠. 똑같이 stage.addChild(new Sprite) 가 됩니다.


그러면 as2는 어떻게 되느냐...

아시다시피 as2는 addChild 가 없습니다. attachMovie 나 createEmptyMovieClip 을 사용해서 MovieClip 을 생성해야 하는데 as2에는 stage 를 가르키는 포인터가 없네요...
as2의 Stage 는 해당 컨테이너를 가르키는게 아니고, 속성만을 사용할 수 있기 때문입니다. 


대신 독특한 전역함수가 하나 있는데요. loadMovieNum 이라는 놈입니다.

loadMovieNum(url:String, level:Number):Void 

라고 레퍼런스에 써있네요. 여기서의 level 이 바로 Stage 내의 Depth 를 말합니다. 앞서 말했듯 _root 는 _level0 이니 필요하면

loadMovieNum(url, 1)

이라고 실행하면 _level1 에 해당 무비클립이 로드됩니다.




3. 아놔... 당췌 이걸 뭐에다 쓰라고 ?
 


UI 작업을 하다보면 Display 객체들의 편한 관리를 위해 Container 를 많이 만들어 사용합니다.

일반적으로 다음과 같은 것들이 필요하겠죠.

1. hp/mp 창, 캐릭터 정보창, 인벤토리 등을 담고 있는 UI 컨테이너
2. 툴팁 컨테이너
3. 얼럿창 컨테이너
4. 로딩 컨테이너

물론 줄여서 하나의 컨테이너로 만들어 쓸 수도 있겠지만 편하게 관리하려면 꽤 좋은 방식입니다.
그런데 이렇게 관리하려면

root.uiContainer.inventory / _level0.uiContainer.inventory  뭐 이렇게 접근해야 할겁니다.

그런데 외부에 따로 컨테이너를 만든다면?? (as2로는 다른 레벨로 해당 UI리소스를 불러온다면?)

root.inventory 

바로 이렇게 불러들여도 되는 것이지요... 툴팁이나 그 이외의 것들은 모두 다른 컨테이너 안에 있으니까 섞일(?) 일이 없습니다.

_level1에 로드된  toolTipContainer swf는 클라는 어떻게 접근해야 하냐고요? 만약 클라가 접근이 어렵다면, 내부에서 경로를

ExternallInterface.call("toolTipinit",  _level1);

이렇게 직접 포인터를 날려주면 되죠.



4. 장/단점을 찾아보자


장점

1. 컨테이너 단계가 하나 줄어든다. 그로 인해 눈꼽만큼의 성능향상
2. 편한 Display 객체 관리 : uicontainer 즉, Document Class 는 정말 ui 리소스만 관리하면 된다.


단점

1. 플래시 디스플레이 구조를 잘 모르는 사람은 코드가 어렵다


아마도 이정도의 장/단점이 있을 것이라고 생각됩니다.

장/단점이 있으니 어떻게 사용할 지는 여러분의 몫입니다. 꼭 이렇게 고쳐 써라가 아니고요...


현재 저도 이렇게 안씁니다.(아마도 저희 UI가 as3 로 넘어갈 때가 되어야, 진짜 제 코드가 적용될 듯 합니다)

게임쪽 ui 개발이란 것이 겪어보니 참 그렇습니다.
더 나은 구조가 있고, 더 나은 방식이 있어도 마음대로 엎고 고치고 할 수 있는게 아닙니다.

중간에 투입된 저로서는 참으로 답답한 코드나 방식들이 많아요...


웹앱을 만들때 처럼 한두명이 개발하는 것이 아니기 때문입니다.
이쪽 일이란게 한번 시작하면 돌리기란 그 몇배의 어려움이 생기기 마련이어서 마음에 안드는 방식으로 계속 개발을 해나가야 하는 부분들이 많네요.




5. 요약
 

자, 훼이크에 속았습니다. 오늘의 포스팅 주제는 사실 플래시의 디스플레이 구조를 이해해보자 랄까요?

요약을 좀 해보죠


1. root 위에 컨테이너가 하나 더 있다. 왜 활용 안하나?

2. as3 : root == Document Class, as2 : _root == _level0

3. as3 : stage = root.parent, as2 : ? 미지의 Stage

4. 툴팁컨테이너나 얼럿 컨테이너를 root 안에 만들지 않아도 된다.

5. 아, 어려워요~





 
크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     Display구조, scaleform, Stage, _level, 스케일폼, 시작점클래스
     0   0
이 글의 관련글(트랙백) 주소 ::    http://www.minarto.com/trackback/324 관련글 쓰기

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

Object Pooling in as2
+   [Scaleform]   |  2012/02/21 17:59  


전에 올렸던 포스팅 중에 외부 라이브러리에 관한 글이 있었습니다.
거기서 테스트 했던 라이브러리 중 polygonal labs 에서 만든 ObjectPool 이 있었습니다.


객체 풀링에 관한 글은 다음의 글들을 한번씩 보시기 바랍니다

http://help.adobe.com/ko_KR/as3/mobile/WS948100b6829bd5a6-19cd3c2412513c24bce-8000.html 
http://www.diebuster.com/flash/6 
http://blog.jidolstar.com/666 


단점이 아예 없는 것은 아니지만 메모리 풀링은 거의 무조건 쓰는게 좋습니다. 저도 as3 작업을 할 때는 위에서 언급한 ObjectPool 을 씁니다. (직접 만들긴 귀찮잖아요)


자, 그런데 스케일폼은 아직 많은 곳에서 as2로도 작업을 해야합니다. 하지만 as3 에서는 많이 쓰지만 as2에서는 잘 쓰질 않더군요...

그럼 as2용 ObjectPool 클래스를 만들어 볼까요?


allocate 함수부터 만들어보겠습니다. allocate  함수는 ObjectPool 클래스를 초기화하고 풀을 생성하는 역할을 합니다.

_dic = [];

function allocate($size:Number, $constructor:Function):Void {
for (i= 0; i < $size; i++ ) {
_dic.push(new $constructor);
}
}



as3에서는 두번째 인자로 class 형을 받지만 as2에서는 class 형이 없습니다...

하지만 클래스를 만들었다면 그 안에 생성자 함수가 있기 마련입니다. 클래스로 인한 객체 생성이란 것이 결국 new 연산자 다음에 생성자 함수를 실행하는 겁니다.

그러니 class 는 없지만 위와 같이 만들면 됩니다.

그럼 이번엔 객체를 가져오는 get 함수입니다.

function get object() {
return _dic.pop();
}


간단하죠???

다 쓴 객체를 반환하는 return 함수가 있어야겠죠?

function return object($obj):Void {
_dic.push($obj);
}



이렇게 간단할 수가!!!! 다 만들었습니다.

물론 제대로 만들려면 손볼 곳이 꽤 많지만, 지금으로도 훌륭한 풀링 클래스가 만들어졌습니다.


제가 MovieclipLoader 클래스를 십만개 만들어 돌려본 결과,
풀링을 사용한 쪽이 750 ms, new 로 생성한 쪽이 1150 ms 가 나오네요...


너무 간단한 코드기 때문에 더이상 뭐 딱히 설명할 것도 없네요. :^) 요점은 이겁니다.

as2 로도 메모리 풀링을 사용할 수 있다!!! 
 
우리 모두 new 연산자 없는 코딩을 해보아요~~~


p.s.

리터럴로 생성할 수 있는 객체는 리터럴로 생성하는 것이 대부분 빠릅니다.
물론 메모리 관리의 잇점 때문에도 풀링을 쓰지만, 속도가 느리다면 그 의미가 많이 퇴색되겠죠?

예를 들어 Array, Object 같은 경우는 리터럴로 생성하는게 빠릅니다. 
크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     ObjectPooling, scaleform, 스케일폼, 풀링
     0   3
이 글의 관련글(트랙백) 주소 ::    http://www.minarto.com/trackback/323 관련글 쓰기
2012/02/23 10:26
비밀댓글입니다
Favicon of http://www.minarto.com BlogIcon 미나토 2012/02/23 15:01 
아, 제가 트위터를 접어서요...

위처2가 언리얼과 스케일폼을 쓰나요? 저희 게임에서는 언리얼을 쓰는데 언리얼에서 지원하는 로컬라이징 방법을 쓰질 않고, 자체 로컬라이징 방식을 사용합니다. 언리얼을 사용하지 않는 게임에서도 공용으로 사용하기 위해서입니다.

저한테 물어보셨다는건 위처2가 스케일폼 비디오를 사용하는건가요?

스케일폼에서는 비디오를 기본이 아니라 따로 라이센스를 제공해서요... 게임중에는 스케일폼 비디오를 사용하지 않을 수도 있습니다. 저희도 사용하지 않아서 스케일폼 비디오를 사용하고 있는거라면 잘 모르겠습니다

Favicon of http://www.facebook.com/profile.php?id=100001887250888 BlogIcon Tae Ryeon Kim 2012/02/23 15:25
USM 파일이면 로컬라이징 파일(GFxUI.int같은)에 키매핑이 되어있을거에요. 그걸 수정하시면 될꺼에요. 배트맨 아캄시티도 동일하게 작업한것을 봤습니다.

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

고인의 명복을 빕니다
+   [일기]   |  2012/02/20 15:29  

디스트릭트 최은석 대표님이 돌아가셨다는 소식을 들었네요.

젊은 나이신데...


한동안 같은 미디어 인터랙티브 분야에서 일했던 만큼 약간은 부러움과 약간은 질투의 대상이었던 그곳이었는데...



고인의 명복을 빕니다. 
크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     0   0
이 글의 관련글(트랙백) 주소 ::    http://www.minarto.com/trackback/322 관련글 쓰기

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

이미지 로드 및 관리
+   [Scaleform]   |  2012/02/20 11:45  

이제 CLIK 에 관한건 어느정도 마무리를 지어도 될 듯 싶네요.
일단 목표로 한 10개 포스팅도 채웠고, 중요한 클래스들은 대부분 다룬 것 같고, 나머지는 그걸 어떻게 응용하는 것인지라... 알아서 하셔야죠들...

CLIK 은 잘 만든 녀석입니다.
저도 다음이나 다다음 마일스톤 즈음에 적용할 생각이고요... 다만 현재시점에서는 4.x 대의 CLIK 은 덜 만들어졌습니다. 당장 쓰시려면 그것만 참고하시기 바랍니다. 




0. 이미지 관리



오늘은 이미지 로드에 관한 글을 써볼까 합니다


일단 기본적인 로드에 관해서는 이 글을 읽어보시고요... 오늘은 로드 그 이후에 관한 글을 쓰려합니다. 로드한 이미지를 어떻게 관리할 것이냐입니다.


as3에서의 이미지 로드라면 일반적으로 Loader 클래스를 씁니다. 로드가 완료되면 Loader 의 content 속성으로 해당 이미지를 참조하고 있습니다. 더불어 Loader 의 contentLoaderInfo 속성content 속성으로도 해당 이미지를 참조하고 있습니다.

그런데 이걸 일일히 Loader 객체를 생성해내고, 이벤트 처리를 하고, 또 그에 따라 메모리를 관리해야 하는 것은 너무나 귀찮고, 힘든 일입니다. 중복된 일이 생겨나면 함수나 클래스로 만들어 처리해야 하는 것이 우리의 해야할 일입니다.

일단 가칭으로 이 클래스의 이름을 ImageLoader 라고 해두겠습니다.
이 클래스에 구현되어야 할 기능을 적어볼까요.

1. 단일 객체를 사용해야 합니다.

2. 이미지 컨테이너가 필요합니다.

3. 이미지를 받아올 api가 필요합니다.

4. 이미지를 삭제할 api가 필요합니다.



1. 단일 객체 사용


게임 UI를 만들다보면 같은 이미지를 여러군데 써야할 일이 많이 생깁니다.
예를 들어 mmorpg라면 물약 이미지는 인벤토리에도 있고, 창고에도 있어야 하며, 상점에도 있어야 합니다. 아, 그리고 퀵슬롯에도 있어야 하는군요.

각각의 UI 마다 이미지를 따로 불러들인다면, 굉장한 낭비겠죠... 뭐, 메모리야 엔진을 잘만져서 하나로 통일해(?) 쓸 지도 모르겠지만 로드라는 그 행위도 cpu 와 메모리의 낭비입니다.

그럼 여기서 우린 한번만 불러서 BitmapData 만 참조해서 여러군데 쓸 방법을 찾아야 합니다.

자, 중복되면 안된다고 했으니 단일 이미지 로드 클래스부터 만들어야 하겠죠... Singleton 을 써서 만드시던지, 그냥 모든 api 를 static 으로 만드시던지 해서 만들면 될겁니다.



2. 이미지 컨테이너 생성

Loader 처럼 하나의 이미지를 불러서 처리하는 거라면 컨테이너가 아닌 그냥 content 참조만으로도 되지만 단일 클래스를 만들다 보니 해당 클래스에서 여러 이미지를 관리해야할 필요가 생겼습니다.
컨테이너라면 Array, Object, Vector.<Bitmap>, DisplayObjectContainer 등등이 있을겁니다. 컨테이너에 관한 글은 이글을 읽어보시기 바랍니다.

저는 Object 를 사용했습니다. 그 이유는 경로의 중복을 제거하기 위해서입니다.

예를 들어보겠습니다.

path = "a.png" 



이런 경로가 있어서 이미지를 불러왔다고 치죠. 불러와서 가장 흔히 사용하는 배열에다가 담으면

Array[0] = img



가 되겠죠. 그런데 다음에 또 불러와야 한다면 어떻게 해야하죠? 또 불러와서 1번에 넣을건가요? 그러면 데이터가 중복된겁니다.

여기까지가 초급자 코스라면, 중급자 코스로 넘어가겠습니다.

Array[0] = {path:"a.png", img:img}



이렇게 저장했다고 치죠. 여기서는 두가지의 문제가 발생합니다.

이걸 가져다 쓰려면 배열을 루프로 돌려 검색해서 해당 원소 객체의 path 속성이 가 불러올 path 속성과 같은지를 판단하여 가져오고 같은 경로의 객체가 없다면 그때 불러오는 방식을 써야 합니다.
그 전에는 또 {} 와 같은 객체를 생성했네요? 

런타임 상에서 다음과 같은 비용이 발생하겠죠.

1. 객체 생성 비용
2. 반복문 비용
3. 비교문 비용

데이터의 중복은 제거했지만 위와 같은 비용의 문제가 발생했습니다. 이제는 다음 상급자 코스로 넘어가겠습니다.

여기서 유니크한 것은 경로입니다. (BitmapData 도 유니크 하지만 유니크한 것인지를 판단하는데 비용이 많이 소모됩니다.)

경로가 같다면 같은 이미지이고, 다르다면 다른 이미지겠죠.

Object를 쓴다면 다음과 같습니다.

getContent(path:String):BitmapData



라고 api를 만들었다면,

BitmapData = Object[path];
if( BitmapData ) return  BitmapData;
else{
로드
return null
}

로드완료{
     Object[path] =  BitmapData 
}




이런 식으로 구현이 되는 겁니다. Object 는 키와 값으로 이루어진 해시맵이고 경로가 곧 키값이 되어서 검색이 가능하게 됩니다.

장점은

1. 객체를 추가로 생성하지 않는다
2. 반복문 검색을 하지 않는다. 대신 키검색을 하지만 반복문의 속도보다 월등하다
3. 비교문 또한 발생하지 않는다



3. 로드 구현


실제 로드를 구현해볼까요

_dic:Object = {}

function getContent($src:String, $handler:Function=null):BitmapData{
var loader:Loader, bd:BitmapData;
bd = _dic[$src];
if(bd){
if($handler) $handler(bd);
}
else{
                src = $src 
loader = new Loader;
                handler = $handler
loader.addEventListener(Event.COMPLETE, complete);
loader.load($src);
}
return bd; 
}
src:String
handler:Function
function complete(e:Event):void{
      _dic[src] =  e.content;
     handler(e.content);
}

function delContent($src:String):void{
delete _dic[$src];
}


이정도가 되겠죠... (정확하게는 구현하지 않았습니다.)

실제로는 전 이렇게 쓰지 않습니다. 예를 들어

1. Loader 는 Pooling 으로 재활용하세요
2. 클로저를 활용해서 멤버변수와 핸들러를 모두 없앨 수 있습니다
3. gc도 해야겠죠...

그 외에도 여러가지가 추가되어 있습니다.

이 포스팅이 제 코드를 베껴가라는 건 아니니까요... (하지만 이또한 구글 검색을 잘 해보면 어딘가 숨어있을지도...)


두번째 인자인 handler 를 보시면 BitmapData를 인자로 받는 함수를 받도록 해놨습니다.
우리가 이미지를 로드해서 쓸 때 그냥 쓸 수는 없잖아요. Bitmap 에 붙이기도 해야하고, 그 후에 크기도 늘려야 하죠. 그에 해당하는 함수를 받도록 해놨죠.

그래서 이미지가 이미 존재한다면 핸들러에 비트맵데이터를 인자로 보내 실행시키고, 없다면 로드를 해서 완료됐을 때, 해당 핸들러를 실행시킵니다.



4. 마무리


좀 덧붙이자면 완벽한 메모리 관리를 꿈꾸신다면 두군데를 더 신경 쓰셔야 합니다.

1. 사용 후에 BitmapData.dispose() 를 실행하여 메모리를 해지한다.
2. Loader.content 는(contentLoaderInfo.content 도) 여전히 해당 비트맵을 참조하고 있기에 gc 대상이 아니다.
3. BitmapData 만 활용하므로 불러온 Bitmap 은 더이상 이 클래스에서 쓸모가 없다. 풀링에 반환하여 재활용한다.

하지만 스케일폼에서는  BitmapData.dispose() 를 지원하지 않습니다. 그래서 가짜 이미지를 로드하는 방법도 있습니다. content 가 null 이 되게 만드는거죠.
(전 굳이 여기까지는 하지 않았습니다. 3번 정도만 사용하죠)



이번 포스팅은 아무래도 독자가 UI 개발자라는 전제하에 작성한 포스팅이 되었습니다.
코드가 좀 많고, 내용도 개발자만 알아들을 만한 내용으로 도배를 했네요...

플래시 개발 일을 어느정도 해오신 분이라면 충분히 알아들을 거라 생각합니다
크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     scaleform, 스케일폼, 이미지로드
     0   0
이 글의 관련글(트랙백) 주소 ::    http://www.minarto.com/trackback/321 관련글 쓰기

아이디 
비밀번호 
홈페이지 
비밀글   

 

 

CLIK 9 - Window
+   [Scaleform]   |  2012/02/17 12:23  

상속

Window  (flex) > UIComponent


Window
 는 모든걸 감싸고 있는 컨테이너이니 뭔가 내용이 많을거 같지만, 사실 별로 없습니다. CLIK 에서는  Window 와 그 안에 들어갈 내용을 분리하기 때문입니다. (컨텐츠는 별도의 UIComponent 를 만들어 쓰란 말입니다.)

Window 는 이걸로 알아서 쓰시고 들어갈 컨텐츠에 집중하란 얘기겠죠...

분리되어 있다는걸 고려하면, 이 녀석을 Pool 로 재활용할 수도 있을 것 같지만...  Window 별로 swf를 만드는 개발 프로세스를 생각해보면 딱히 그렇지도 않습니다.


[Inspectable]

1. minWidth:Number = 150

최소 넓이입니다


2. maxWidth:Number = 500

최대 넓이입니다 


3. minHeight:Number = 150

최소 높이입니다 


4. maxHeight:Number = 500

최대 높이입니다  



5. title:String (flex)

타이틀이겠죠


6. source:String

Window 는 컨테이너일 뿐입니다. 뭔가 컨텐츠가 안에 있어야겠죠. 컨텐츠에 해당하는 클래스명입니다.
내부에서 접근하려면 _content:DisplayObject 나 getChildByName("content") 로 접근할 수 있습니다.


7. contentPadding():Object = Padding(0, 0, 0, 0)

위에 언급한 컨텐츠의 간격(좌우 여백)입니다


[public]

Window 에서의 public 속성들은 대부분 UI 요소들입니다.
그렇기에 없어도 무방합니다만, 필요하다면 이름을 같게 해주면 알아서 처리해줍니다

1. closeBtn:Button

닫기 버튼이겠죠. 클릭시 ComponentEvent.HIDE 이벤트가 발생합니다.
visible = false 로 사라지는게 아니고, removeChild 로 사라진다는 걸 유념하시기 바랍니다


2.  okBtn:Button

확인버튼일거고요. closeBtn:Button 과 똑같은 역할을 합니다. 이름만 다르달까요?

일반적으로 UI 우측 하단에 달려있는 UI 크기 변경 버튼입니다. 최소/최대 크기값에 영향을 받습니다.
크기 변경시에 ResizeEvent.RESIZE 이벤트가 발생합니다


4. titleBtn:Button (flex)

타이틀은 텍스트필드나 라벨이 아니라 버튼입니다. 타이틀 버튼을 드래그 하는 방식으로 윈도우의 이동이 가능합니다


5. background:MovieClip

배경이죠
 

6. hit:MovieClip

실제 윈도우의 마우스 영역입니다. 배경이 알파값이 있는 이미지일 경우가 많다보니 실제 UI 영역과는 차이가 있을 수도 있으니까요. 없으면  Window 자체가 영역으로 잡힙니다.

내부적으로 Sprite의 속성인 hitArea 로 처리됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     CLIK, scaleform, window, 스케일폼, 윈도우, 클릭
     0   0
이 글의 관련글(트랙백) 주소 ::    http://www.minarto.com/trackback/320 관련글 쓰기

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 | 2 | 3 | 다음>>

미나토's Blog is powered by Daum