블로그 이미지
dreaming

Am I dreaming? Yes, I am dreaming. and I am dreaming now.

Rss feed Tistory
Working 2006/06/29 02:32

어이없는 Flash 8의 BitmapData draw()의 BUG

요즘 여전히 Dreaming은 Flash로 여러가지 prototyping에 열중입니다. (곧 공개될 버젼도 몇개 있습니다. ㅋㅋㅋ - 아 물론 Mac에서도 돌아야죠.) 그중 예전부터 좀 먹어주던 8버젼 sample들이 있었죠. 기억을 하실련지 모르겠지만... Flash에서 object의 BitmapData를 이용하여 화면의 일부를 capture하는, 또 아주 비효율적이긴 하지만 pixel의 RGB값들을 서버에 전송하여 jpg로 저장하는... 그런 예제를 봤을 것입니다.

열심히 제 짝꿍이랑 관련 실험들을 했습니다. server쪽은 준비 되었삼? 짠 것들 배포했삼? 오케이, local에서 페이지 괜차너? okay. 서버에 올려서 test? 에잉 머야~ flash인데 local에서 되면 되야지... 그게 오산이였습니다.

제가 서버에서 capture를 이용한 proto하나를 돌려봤더니... 이런 "흰색"의 화면들만 줄줄이 찍히는 것입니다. -_-;;;; "OH MY GOD!!! CTO한테 보여주기로 한게 이번주 아냐~ 아아아악! 기획자에게도 큰소리쳤는데!!!"

머 얼굴은 울그락불그락... proto 하고 곧바로 오픈준비하겠다고 제주도로 도망쳤지만 이제 돌아가야할 시간은 다가오고... 그래서 머 어쩔수 있나요. Google님에게 물어봤습니다. 그런데 이런 어처구니가 없는

몇몇 해외블로그에서도 posting이 올라왔지만... 머 결정적으로 livedoc에서 이야기되는 거만 봐도 상황은 알 수 있습니다. http://livedocs.macromedia.com/flash/8/main/00001950.html

머 코멘트들을 보면 자기들 나름 머라고 하지만 문제는 다음과 같습니다.

Flash에서는 다양한 방법으로 외부자원을 가져올 수 있습니다. 주로 많이들 쓰는 것들은 이미지겠죠. 머 다른 것들도 있습니다. 이때 "장난삼아서 만들어 보는 어떤 것"이 아닌 다음에야 그런 이미지들은 다들~ 다른 서버에 올려서 사용하게 됩니다. 결국 domain이 같지 않을 수 있다는 것이죠. Flash의 security모델은 거기에 대한 해답으로 crossdomain셋팅을 하게 되면 피해갈 수 있습니다. Flickr이나 Daum Pie나 또 이번 작업했던 Daum 동영상 인코딩팜이나 다들 domain이 다른 서버를 사용하면서 그 방법을 통해 접근 권한을 얻습니다.

But.... 여러분이 권한을 가지고 있다고 하더라도, BitmapData의 draw를 이용할 수는 없습니다. 같은 domain에 있지 않으면 말입니다. -_-;;;;;;;;;;;;;;;;; 어이없음이죠. 명백한 Bug죠. 권한을 가져서 이미지를 뿌리기까지 했는데... 유독 저 녀석만 거기 반하다니... 머하자는 건지...

물론 Flash를 이용한 대규모서비스를 다들 생각하지 않아서, 게다가 저런 기능까지 고민하진 않아서 별반 issue가 안되었나 봅니다만.... 그리고 livedoc에 코멘트에 달린 해결방법이란 것들은... 천진발랄하여서.. 그런 방법이 적용가능할 정도 서비스라면 같은 domain에 두는 것도 문제가 아닐텐데...

하여간 오늘 아니 어제밤에 그 사건은 그렇게 이유를 찾았습니다. 그렇지만 또 집에서 생각해보니 피해갈 방법이 있긴 하군요.

Flash만큼 버그가 작은 녀석도 없다고 생각했었는데... 요즘들어서 그건 단지 ani이상으로 사용하지 않았을 때 뿐인거 같습니다. 하긴 doc처럼 안움직이는게 이 녀석 뿐일까요. 가끔 그 버그들을 피해가는 방법을 짝꿍이랑 구현하다보면 내부에 어떤 식의 소스인지 대충 감이 옵니다.

역시 다 사람이 만드는 것이군요. :) (편하게도 넘어간 부분일꺼란 느낌이 팍팍 옵니다.)

하여간 혹 BitmapData의 draw를 이용하여 dynamic한 capture를 원하시면, 간단한 것은 일단 같은 domain에 두고 하십시요. 아직 그 이상의 해결방법은 없습니다.

TOTAL 1,461,049 TODAY 138