`

flex中写js代码

    博客分类:
  • flex
阅读更多
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:util="cn.isvi.util.*">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
			public function jsCallAs():void{
				mx.controls.Alert.show("as调用util.javaScript中js 再调用as中的本方法");
			}
			public function jsCallAs2(args:String):void{
				mx.controls.Alert.show(args.toString()+"js调用As传递参数");
				js.evalJavaScript("callAs");
			}
			public function callJs():void{
				js.evalJavaScript("testC",2,3,4);//这只能调用flexjs.js中已写好的方法。
				js.evalJavaScript("kangkang");//现在可以调用
			}
		]]>
	</mx:Script>
	<util:JavaScript target="{this}" id="js"> 
		<util:jsString>
			<![CDATA[
			alert("hellow");
			function callAs(){
				alert("测试");
			}
			this.kangkang=function(){
				callAs();//调用上边写的那个方法
				this.testB();//调用flex.js写的testB();方法
				this.invokeAs("jsCallAs2","hello");//调用flex方法
			}
			]]>
		</util:jsString>
	</util:JavaScript>
	<mx:Button label="calljs" click="callJs()">
		
	</mx:Button>
</mx:Application>

 

在index.templete.html中加一句
<script src="flexjs.js" lauguage="javascript"/>





 
var jsfromAs;


//测试
function _test(){
	//alert("init1")
	try{
	var flexapp=getMovie();
	var func=flexapp.getJsString();
	//document.write(func); 
	eval(func);
	test();
	
	//this["invoke"].call()
	
	}catch(e){
		alert(e);	
	}
}

//初始化flex中的javaScript
function initDocument(jsarg){
	try{
		var flexapp=getMovie();
		jsfromAs=jsarg;
		eval(jsfromAs);
		if(typeof flexApp.invokeAs=="function"){
			alert("shi yige  a function");	
		}
		
		
	}catch(e){
		alert(e+"initDocument");	
	}
	
	
}

function invokeAs(methodName){
	var arglength=arguments.length;//参数长度
	var flexapp=getMovie();
	
	var args=new Array();//methodName那个参数去掉
	if(arglength==1){
		flexapp.invokeAs(methodName,args);
		return;
	}else{
		for(var i=1;i<arglength;i++){
			args.push(arguments[i]);
		}
		flexapp.invokeAs(methodName,args);//这个arguments[0]还包括methodName这个参数。可以在这截取,
		//也可以在As截取arguments,去掉arguments[0]
	}
}
//as调用As中写的js代码.methodName是参数的最后一位
function invokeFromjs(array){
	try{
	
	
	eval(jsfromAs);
	
	
	var methodName=array.pop();
	if(array.length==0){
		this[methodName].call();
	}else{
		
		this[methodName].apply(this,array);	
	}
	
	}catch(e){
		alert("chucuo le"+e);	
	}
}
function testB(){
	alert("testb");	
}
function testC(t1,t2,t3){
	alert(t1+":s"+t2+":s"+t3);	
}
//调用As中写的js
function callJsInAs(){
	
}

function getMovie(){
	return thisMovie("flexJs3");	
}

function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics