工作遇到js调用as的情况,所以研究半天,终于解决,贴出以备后用
1.以下是网页的flash代码(注意在object中定义好id)
------------------------------------------------------------------------------
<div class="xinxi">
<script type="text/javascript">
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','244','height','272','src','images/ziliao','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','wmode','transparent','movie','images/ziliao' ,'id','ziliao'); //end AC code
</script>
<noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="244" height="272" id="ziliao">
<param name="movie" value="images/ziliao.swf" />
<param name="quality" value="high" />
<param name="wmode" value="transparent" />
<embed src="images/ziliao.swf" width="244" height="272" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" wmode="transparent"></embed>
</object>
</noscript>
</div>
2.js中调用flash函数的函数
//与flash交互
function callAS(data)
{
document.getElementById("ziliao").displayRoleAttr(data); //displayRoleAttr为flash中的函数名
//thisMovie("ftest").displayRoleAttr("playboy");
}
//flash浏览器处理
function thisMovie(movieName) {
var app=navigator.appName;
var verStr=navigator.appVersion;
if (app.indexOf('Netscape') != -1) {
return window[movieName];
}
else if (app.indexOf('Microsoft') != -1) {
return document[movieName];
}
}
3.flash中的函数
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.external.ExternalInterface;
import flash.system.Security;
public class main extends Sprite {
public function main() {
try {
Security.allowDomain("*");
//设置js中调用as中方法的接口
ExternalInterface.addCallback("displayRoleAttr", displayRoleAttr);
} catch (error:SecurityError) {
rolename_txt.text="SecurityError";
}
function displayRoleAttr(jsonObj:Object) { //这里传递的是json数据的对象
rolename_txt.text=jsonObj.rolename;
grade_txt.text=jsonObj.grade;
//以下是动态显示血条长度
exp_mc.scaleX = jsonObj.expCurrVal/jsonObj.expCumVal ;//EXP
hp_mc.scaleX = (jsonObj.grade+5) * Math.sqrt(jsonObj.grade+20) * 3.5 + jsonObj.strVal*2;//暂没加上物品增加值
mp_mc.scaleX = (jsonObj.grade+4) * 3 + (jsonObj.intVal*4) ; //暂没加上物品增加值
}
}
}
}