Flex获取窗体大小 Flex与JS互相调用
使用ExternalInterface.addCallback 来发布 ActionScript 要提供给 JavaScript 调用的函数或方法,执行完 ExternalInterface.addCallback 后,通过 ExternalInterface.call 方法调用 JavaScript 中的方法获取屏幕参数。
详细复制下面代码运 行
1.favzone.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
????backgroundColor="#FFFFFF"
????creationComplete="init()">
????<mx:Script>
????????<![CDATA[
????????import mx.core.Container;
????????import flash.external.ExternalInterface;
????????import mx.containers.Canvas;
????????[Bindable]
????????private var screenWidth:int = new int();
????????[Bindable]
????????private var screenHeight:int??= new int();????
????????????????
????????internal function init():void{
????????????ExternalInterface.addCallback("setScreenSize",setScreenSize);
??????????????ExternalInterface.call("getScreenSize",setScreenSize);
????????}
????????
????????private function setScreenSize(width:int,height:int):void
????????{
????????????this.screenWidth = int(width);
????????????this.screenHeight = int(height);
????????}????????????
????????]]>
????</mx:Script>
????
????<mx:Text??text="screenWidth:{screenWidth}"/>
????<mx:Text??text="screenHeight:{screenHeight}" y="42"/>
</mx:Application>
calljs.js
function thisMovie(movieName) {
????if (navigator.appName.indexOf("Microsoft") != -1) {
????????return window[movieName];
????} else {
????????return document[movieName];
????}
}
// send to flex
function getScreenSize()
{
???? var size = [];
???? size = getSize();
???? thisMovie("favzone").setScreenSize(size[0],size[1]);
}
//get size
function getSize() {
??var myWidth = 0, myHeight = 0;
??if( typeof( window.innerWidth ) == 'number' ) {
????myWidth = window.innerWidth;
????myHeight = window.innerHeight;
??} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
????myWidth = document.documentElement.clientWidth;
????myHeight = document.documentElement.clientHeight;
??} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
????myWidth = document.body.clientWidth;
????myHeight = document.body.clientHeight;
??}
??var size = [];
??
??size[0] = myWidth;
??size[1] = myHeight;
??return size;
}
最 后在调用favzone.swf的页面中引用这个js
<script src="calljs.js" language="javascript"></script>