개발/Flex
웹페이지가 로드된 후 flex의 ActionScript 함수 실행 시키기
리미르체르
2010. 8. 2. 11:41
웹페이지가 나타나면 자동으로 flex의 함수를 호출해야하는 경우가 생겼다.
그래서 아래와 같이 페이지를 만들었다.
HTML
<head> function callFlashFunction() { flashMovie.callJavaScriptToActionScript( 'i am here' ); } </head> <body onload='javascript:callFlexFunction()'> <!-- flex --> <object id='flexMovie'> <param name="allowScriptAccess" value="always" /> <embed name='flexMovie' allowScriptAccess="always" /> </object> </body>
하지만 기대하던 대로 동작하지 않았다.
4 번째 줄에서 flexMovie를 인지하지 못하는 것이었다.
아직 flex가 올라오기 이전에 함수가 먼저 호출되기 때문이었다.
그래서 flex에서 자신이 로드되면 JavaScript를 호출하는 방식으로 수정하였다.
변경된 HTML
<head> function callFlashFunction() { flashMovie.callJavaScriptToActionScript( 'i am here' ); } </head> <body> <!-- flex --> <object id='flexMovie'> <param name="allowScriptAccess" value="always" /> <embed name='flexMovie' allowScriptAccess="always" /> </object>
FLEX code 일부
private function onCreationComplete() { if ( ExternalInterface.available ) { ExternalInterface.call( "callFlashFunction" ); } else { throw new Error( "Can't use ExternalInterface" ); } }
HTML에서 flex movie를 로드하면
flex에서 FlexEvent.CREATION_COMPLTETE 가 발생할 경우
5번째 줄에서 처럼 HTML 페이지의 JavaScript를 호출합니다.
검색의 바다에서 얻은 정보
- embed에나 object에 onload를 붙이고 싶었다.
>>> body 에만 onload 가 붙는다.
궁금한 부분
- javascript를 넣는 위치 변경으로 동작하지 않을까? ( flexMovie를 javascript가 인식하지 않을까? )
:: body 안쪽 flex movie 뒤쪽
> 하지만 안될것같다. 왜냐하면 body에서 javascript를 호출하니까?
자바스크립트에 대한 이해부족
HTML 에 대한 이해부족