Search Flex Samples

load a swf from outside and call its function





Lets suppose you have a swf(Column3D.swf) and you don't have code(FLA) for it but you need to call its function(setDataXML) from Flex and need to send parameters.


How it can be done through JAVASCRIPT


<HTML>

<HEAD>

<TITLE>FusionCharts & JavaScript - Updating chart using setDataXML() Method</TITLE>

<SCRIPT LANGUAGE=”Javascript” src=”../../FusionCharts/FusionCharts.js” mce_src=”../../FusionCharts/FusionCharts.js”></SCRIPT>

<SCRIPT LANGUAGE=”JavaScript”>

//updateChart method is called whenever the user clicks the button to

//update the chart. Here, we get a reference to the chart and update it's

//data using setDataXML method.

function updateChart(DOMId){

//Get reference to chart object using Dom ID

var chartObj = getChartFromId(”chart1Id”);

//Update it's XML

chartObj. setDataXML (”<chart><set label='B' value='12′ /><set label='C' value='10′ /><set label='D' value='18′ /><set label='E' value='21′ /></chart>”);

//Disable the button

this.document.frmUpdate.btnUpdate.disabled = true;

}

</SCRIPT>

</HEAD>

<BODY>

<div id=”chart1div”>

FusionCharts

</div>

<script language=”JavaScript”>

var chart1 = new FusionCharts(”../../FusionCharts/Column3D.swf”, “chart1Id”, “400″, “300″, “0″, “1″);

chart1.setDataXML(”<chart><set label='A' value='10′ /><set label='B' value='11′ /></chart>”);

chart1.render(”chart1div”);

</script>

<form name='frmUpdate'>

<input type='button' value='Change Data' onClick='javaScript:updateChart();' name='btnUpdate'>

</form>

</HTML>


create a new flash file (CallFlash.swf) and a movieclip on stage and give an instance name(mc) to it.Write actions on the 1st frame of an application:


function interFunc(){

clearInterval(_root.interid);

_root.mc. setDataXML (_root.param2);

}


var receiving_lc:LocalConnection = new LocalConnection();

receiving_lc.methodToExecute = function(param1:String,param2:String) {

//please use getBytesLoaded, getTotalBytes instead of using setInterval function

_root.receiving_lc.close();

_root.sam.loadMovie(param1);

_root.param2 = param2;

_root.interid = setInterval(interFunc,1000);

};

_root.receiving_lc.connect(”lc_name”);


In the Flex application:


Add Column3D.swf and CallFlash.swf


<?xml version=”1.0″ encoding=”utf-8″?>

<mx:Application xmlns:mx=” http://www.adobe.com/2006/mxml ” layout=”absolute”>

<mx:Script>

<![CDATA[

import flash.net.LocalConnection;

public var myXML:String=”<chart><set label='A' value='10′ /><set label='B' value='11′ /></chart>”;

private function initApp():void{

var sending_lc:LocalConnection = new LocalConnection();

sending_lc.send(”lc_name”, “methodToExecute”,”Column3D.swf”,myXML);

}

]]>

</mx:Script>

<mx:SWFLoader source=”CallFlash.swf” creationComplete=”initApp()” />

</mx:Application>


Run the Flex application, it will show the Column3D.swf data according to the parameter you are sending.

0 comments:

Related Flex Samples

Learn Flex: Flex Samples | Flex Video Tutorials Flex Examples