Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 형변환
- KGC 2013
- DataBinding
- 플래시
- 태그클라우드
- MMOKit
- watch
- as3.0
- scaleform4
- as2
- flash cs3
- 애드온
- 집합의 연산
- scaleform3
- 스케일폼
- flash
- scaleform
- 강좌
- addChild
- 샌프란시스코
- ApplicationDomain
- as3
- GDC
- 클릭
- flash player 10
- Chart
- CLIK
- autodesk
- 수학정석
- Document Class
Archives
- Today
- Total
scaleform.minarto.com
Scaleform 에서의 텍스처 로드 본문
플래시에서 이미지를 불러오는 방법이야 간단합니다...
var loader:Loader = new Loader();
var info:LoaderInfo = loader.contentLoaderInfo;
info.addEventListener(Event.COMPLETE, onComplete);
var request:URLRequest = new URLRequest();
request.url = 경로;
loader.load(request);
function onComplete($e:Event):void{
var info:LoaderInfo = $e.target as LoaderInfo;
var info:LoaderInfo = $e.target as LoaderInfo;
var bm:Bitmap; = Bitmap(info.content);
addChild(bm);
}
as2 라면 다음과 같겠죠...
var loader:MovieclipLoader = new MovieClipLoader();
loader.addListener(this);
var content:MovieClip = createEmptyMovieClip("content", 0);
loader.loadClip(경로, content);
function onLoadInit($content:MovieClip ):Void{
trace($content)
}
하지만, 스케일폼에서는 일반 데스크탑 자원이나 http 프로토콜에 있는 이미지를 불러오는 것이 아닙니다...
위와 같이 웹앱을 만들 때처럼 그냥 스케일폼 플레이어에서 돌려보면 이미지가 잘 불러지지만, 정작 udk에 통합된 ui 내에서는 이미지가 열리지 않습니다
언리얼 엔진이면 UPK 패키지 안에 있는 지도나 아이템 텍스처일 것이고... 스타면...mpq일까요? 아마 그러할 것입니다...
그런데 그 경로는 결국 클라이언트가 지정해줘야 하는 것이겠죠... UI개발자가 아니고요... 어쨌든 udk와 통신을 해서 그 경로를 받았다고 치죠. 하지만 일반웹앱처럼 텍스처가 그냥 불러지지 않습니다.
스케일폼에서는 img태그를 사용해서 게임의 텍스처를 불러올 수 있도록 되어있습니다.
http://udn.epicgameskorea.com/Three/ScaleformTechnicalGuideKR.html#이미지 로딩
위와 같습니다...
주의해야 할 것은 다음과 같습니다.
1. "img://경로" 가 바로 텍스쳐 경로인 셈입니다... 확장명은 없습니다...
2. img 태그를 쓰지 않아도 리소스는 불러올 수 있지만 swf 리소스만 가능하고, 이미지 리소스는 불러올 수 없습니다.
3. udk 에서는 upk 패키지에서 새롭게 가상의 절대경로가 package 라는 이름으로 생성됩니다...(메인 swf 기준으로)
하지만 직접 절대경로를 이용해 불러오는 (/를 이용해서) 방식은 문제가 있습니다
4. 스케일폼 3.x대에서는 Bitmap.smoothing 을 사용할 수 없습니다... flash player 9 에서 지원하는 MovieClip.forceSmoothing 은 스케일폼에서 지원하지 않습니다.
마찬가지로 as2를 지원하는 3.x 대에서는 이미지를 불러온 후 MovieClipLoader.unloadClip 를 통해서 gc를 할 수 있으나,
(프로파일러로 확인한 제가 이미지 로드 & gc 적용전 우리 회사 UI 의 참담한 모습... 붉은색이 메모리 ㅠㅠ)
(프로파일러로 확인한 loadClip과 unloadclip 를 적용한 후의 이미지 로드 & gc)
하지만, 스케일폼에서는 일반 데스크탑 자원이나 http 프로토콜에 있는 이미지를 불러오는 것이 아닙니다...
위와 같이 웹앱을 만들 때처럼 그냥 스케일폼 플레이어에서 돌려보면 이미지가 잘 불러지지만, 정작 udk에 통합된 ui 내에서는 이미지가 열리지 않습니다
언리얼 엔진이면 UPK 패키지 안에 있는 지도나 아이템 텍스처일 것이고... 스타면...mpq일까요? 아마 그러할 것입니다...
그런데 그 경로는 결국 클라이언트가 지정해줘야 하는 것이겠죠... UI개발자가 아니고요... 어쨌든 udk와 통신을 해서 그 경로를 받았다고 치죠. 하지만 일반웹앱처럼 텍스처가 그냥 불러지지 않습니다.
스케일폼에서는 img태그를 사용해서 게임의 텍스처를 불러올 수 있도록 되어있습니다.
http://udn.epicgameskorea.com/Three/ScaleformTechnicalGuideKR.html#이미지 로딩
위와 같습니다...
주의해야 할 것은 다음과 같습니다.
1. "img://경로" 가 바로 텍스쳐 경로인 셈입니다... 확장명은 없습니다...
2. img 태그를 쓰지 않아도 리소스는 불러올 수 있지만 swf 리소스만 가능하고, 이미지 리소스는 불러올 수 없습니다.
3. udk 에서는 upk 패키지에서 새롭게 가상의 절대경로가 package 라는 이름으로 생성됩니다...(메인 swf 기준으로)
하지만 직접 절대경로를 이용해 불러오는 (/를 이용해서) 방식은 문제가 있습니다
4. 스케일폼 3.x대에서는 Bitmap.smoothing 을 사용할 수 없습니다... flash player 9 에서 지원하는 MovieClip.forceSmoothing 은 스케일폼에서 지원하지 않습니다.
마찬가지로 as2를 지원하는 3.x 대에서는 이미지를 불러온 후 MovieClipLoader.unloadClip 를 통해서 gc를 할 수 있으나,
(프로파일러로 확인한 제가 이미지 로드 & gc 적용전 우리 회사 UI 의 참담한 모습... 붉은색이 메모리 ㅠㅠ)
(프로파일러로 확인한 loadClip과 unloadclip 를 적용한 후의 이미지 로드 & gc)
as3를 지원하는 4.x 대에서는 Bitmapdata.dispose() 를 지원하지 않기 때문에 dispose 를 이용한 gc를 할 수가 없습니다. (dispose 말고 다른 방법으로 해제하던가요? as3 한지가 한 1년쯤 지났더니 기억이 안나서...)
저도 다른 방법을 생각 중입니다.
5. 큰 이미지를 불러왔는데 아주 작은 이미지를 확대시켜놓은 것마냥 뿌옇게 나타나는 경우가 있습니다.
이는 텍스쳐를 밉맵으로 불러왔기 때문입니다. udk의 경우 upk 패키지를 열었을 때(fully load), 텍스처를 더블클릭해서 열어보면 맨밑의 Mip Gen Settings 를 NoMipmaps 로 선택해두면 해결됩니다.
udk의 경우 이러한 건데... 다른 엔진은 잘 모르겠습니다....(다른 엔진 사주시면 찾아봐드릴게요 ㅎㅎㅎ)
6. JPG 형식의 포맷은 압축포맷이기에 메모리에 올라가면서 압축이 해제되어 메모리가 4배이상 늘어납니다... png나 tga 같은 비압축 포맷 또는 dxt같은 게임텍스처용 파일로 작업할 것을 권합니다
이미지 로드 & gc 에서 보았듯이 개발이라는 것이 누가 어떻게 개발하느냐에 따라서 그 결과물은 0~xxx 배까지 차이가 난다고 생각합니다.
당연히 저보다 뛰어난 개발자가 만들면 더욱더 최적화 될겁니다
UI 라는 것이 그냥 UI 디자이너에게 금방 할 수 있다고 사기쳐서 만들 수 있는 것도, 다른 일 할 것도 많은 클라팀에게 무조건 떠넘길 일도 아니란거죠...
r&d와 투자없이 스케일폼을 적용해봤자 스케일폼은 애물단지일 뿐입니다...