[ AIR 2.0 ] Htmlloader 를 사용한 AIRAliases.js 및 html 과 자바스크립트 통신시 유의점

2010. 10. 8. 20:56AIR

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


먼저 air 1.0 이 나오면서 눈에 띄게 보이는 htmlLoader 는 누구나 잘 아실것 입니다

아직까지 이걸 활용해서 상용화하거나 그런곳은 눈에 띄게 없지만 우리들에겐 너무 멋진녀석이죠 ~

먼저 air 자체는 사파리, 구글크롬등에서 채택한 Webkit엔진이 런타임내에 탑재되어 있습니다 .

그러나 html퍼블리싱 작업시에는 대체적으로 firefox 로 테스트해봐야  좀더 잘 맞는거 같습니다... 어디까지가 개인적인 ..

이제 여기서 문제는 air와 htmlloader 사이에서는 통신 방법인데 결국 javaScript 밖에 없습니다

통신방법에는 여러가지가 있습니다

자세한건 레퍼런스를 참조 바랍니다

http://help.adobe.com/ko_KR/Flash/CS5/AS3LR/flash/html/HTMLLoader.html?allClasses=1


그러나 이상한건 air 1.5 에서 문제가없었던 AIRAliases.js 또는 "window.runtime.trace" 이런식으로 사용하여

여러 플래시 api 를 사용할수 있었는데 이상하게 air 2.0 업데이트되면서 에러를 발동 시키더군요

어떻게 보면 여기서도 크로스 스크립팅문제가 있는거 같습니다 .. 해결방법은

http://help.adobe.com/ko_KR/as3/dev/WS5b3ccc516d4fbf351e63e3d118666ade46-7f08.html

있습니다 . 결국 iframe 으로 하라는건데 .. 이 방법은 조금 그런거 같습니다..

제가 해결한 방법은 간단합니다 플래시에서 html에 있는 자바 함수를 캐치해서 매개변수를 받아서 처리하는방법입니다

간단히 설명드리면 발생한 에러는


이거와 같이 ReferenceError : Can't find variable : air 라는 것입니다

또한 여기서 window.runtime 를 호출해도 같은 현상입니다

결국 air를 html가 감지를 못하는 그런 요상시런 현상인거 같기도 합니다 ;; 여튼 .. 이건 패스하고


AIRAliases.js  를 불러오게 되면 보시는바와 같이 flash api 를 자유자재로 사용할수있습니다

이걸 그럼 한번


이렇게 변경해보겠습니다 간단합니다 clickme라는걸 클릭하면 gotoURL 이라는 함수를 통해 문자열을 날리는것입니다

스크립트에는 보시는바와 같이 기본적인 함수 선언이 되어있습니다


플래시에서는 html 페이지가 로드가 완료되면 complete 이벤트를 받게 되면

html 를 통해 window 로 접근해 html 페이지를 참조 할수있습니다

그럼 플래시에서 gotoURL 이라는 함수를 듣는다는 뜻입니다 ..

실행해보시면 플래시에서 gotoURL 이라는 함수를 통해 $url 매개변수을 알수있게 됩니다

끝!