블로그 이미지
Max.

calendar

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 30 31        

Notice

2011.09.01 08:40 개발관련

1) ExternalInterface.call 예제

최초 Flex App이 웹화면에 띄워질때 Javascript function을 읽어 들인다. 

mxml

private function getData(event:MouseEvent):void{
searchDate = ExternalInterface.call( "getFlexDate", "test");
if(searchDate.context == null){
searchDate = new Object();
searchDate.context = "http://localhost:8088";
searchDate.startDate = "2011-08-01";
searchDate.endDate = "2011-08-29";
searchDate.selectId="";
}
searchDate.context = searchDate.context + amf;
//Alert.show(searchDate.context + " : " + searchDate.startDate + " ~ " + searchDate.endDate); 
callChanel(searchDate);
}
private function callChanel(sd:Object):void{
var ch:AMFChannel = new AMFChannel();
ch.url = sd.context;
ch.id = "amf";
remotingChannels  = new ChannelSet();
remotingChannels.addChannel(ch);
channelHandler(sd.startDate, sd.endDate);


Html(Javascript)

function getFlexDate(txt){
var searchDate = new Object();
searchDate.startDate = "2011-08-01";
searchDate.endDate = "2011-08-19";
searchDate.context="http://localhost:8088";
searchDate.country="";
return searchDate;
}


최초 시작시 관련 값을 읽을때 편리한다. 

 
2)  ExternalInterface.addCallback  예제

Javascript 로 특정 Flex(Actionscript) function을 호출 하고자 할때, 예를 들어 검색폼이 Html이고, 그값을 Flex에 전달하고 싶을때 사용한다.

mxml

       //creationComplete="init()" 이 상단에 선언되 있음.

            [Bindable] public var searchDate:Object;
    public var realFunction:Function = callFlexReal;
 
private function init():void{
ExternalInterface.addCallback("callFlex", realFunction);
}
 
  public function callFlexReal(sd:Object):void {
sd.context = sd.context + amf;
searchDate = sd;
//Alert.show(searchDate.context + " : " + searchDate.startDate + " ~ " + searchDate.endDate); 
callChanel(searchDate);
}


Html(Javascript)


function callFlex() {
            var searchDate = new Object();
searchDate.context = "http://localhost:8088";
searchDate.startDate = "2011-08-01";
searchDate.endDate = "2011-08-29";
searchDate.country="";
alert(searchDate);
            getMovieName("${application}").callFlex(searchDate); 
            }

            function getMovieName(movieName) {
           if (navigator.appName.indexOf("Microsoft") != -1) {
            return window[movieName]
           }else {
            return document[movieName]
           }
            }

<a href="#" onclick="callFlex()">callFlex()</a>


 
 ${application}는 flash object tag 아이디 명이다. flex builder를 사용한다면, index.template.html 에당 코드를 볼수 있고, 대략 정의하면 된다.   ExternalInterface.addCallback은 한번에 안되었는데, 이유가 이 플래시 Object 아이디명을 정확하게 설정하지 않아서 였다.
저작자 표시
신고
posted by Max.