有时我们需要弹出自定义提示框,并显示在屏幕中心,这是需要根据浏览器大小来动态或得浏览器中心位置的坐标,这时可以使用 flex和html里的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>
效果图:
使用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>