当我们开发全站式flash应用时,希望呈现一个铺满浏览器屏幕的flash. 铺满浏览器屏幕的flash可以通过设置引用flash参数中的width和height为100%来实现. 但是,光做这点是不够的,原因是flash的内部的界面部局,尚没有如此智能(指的是非flex project,如actionscr
当我们开发全站式flash应用时,希望呈现一个铺满浏览器屏幕的flash.
铺满浏览器屏幕的flash可以通过设置引用flash参数中的width和height为100%来实现. 但是,光做这点是不够的,原因是flash的内部的界面部局,尚没有如此智能(指的是非flex project,如actionscript project或用flash ide编译的项目等). 今天,用户的浏览器分辨率主要为1024*768和1280*1024,还有一些老外用那种非常宽大的浏览器:
图1
想让你的flash应用在诸多用户面前都有一个比较好的页面展现,就需要一些代码来辅助了.
注意到as3中有一个event.resize事件,此事件当flash的大小发生改变时激发...aha,找到答案了;)
看一下实现的代码,以下代码写在主类中:
//4.init screen size adjust
private function initscreenadjust():void
{
//set scale mode,设定缩放模式为无缩放
stage.scalemode=stagescalemode.no_scale;
//set screen adjust event,设置屏幕缩放
stage.addeventlistener(event.resize,screenadjust);
//在程序初始时就调用一下界面调整
screenadjust(null);
}
//4.1adjust sample实例
private function screenadjust(evt:event):void
{
//uidata.screen_width和uidata.screen_height指的是编译出的flash宽高值.
//可通过[swf(width=1024, style=max-width:90%]的形式进行设定(flex),或在flash ide中直接设定
var offx:int=math.floor((uidata.screen_width -stage.stagewidth)/2);
var offy:int=math.floor((uidata.screen_height-stage.stageheight)/2);
//this指的是主类,这样做的原因请参考图2
this.x=offx;
this.y=offy;
//内部ui调整,这里调整的是下部工具栏的一个y值.
mdowntoolbar.y =stage.stageheight-uidata.down_bar_off_y;
}
图2展示的是flash主类的坐标值与stage宽高的关系,这里的调整是将flash主类的左上角始终贴齐当前flash player的左上角,无论尺寸如何变化.
图2
其实,我这里只是给出一种界面调整方案而已,有时,你可能希望主类局中,一切就看你的需要喽.
一个简单的示例程序地址,可以通过调整浏览器的大小来观察界面的布局改变:video始终居中;上,下工具栏分别位于上下两边,(代码很容易,主要的上面都已经贴了,就不附代码了)
http://www.xia108.com/labs/rapidflashdev/chp2.solution/2.2.1fullscreen/index.htm
贴一个实际的应用吧,我的六度拓扑在不同浏览器下的表现,广告广告;)
1024*768
1280*1024
文章来自: 闪客居(www.flashas.net) 详文参考:http://www.flashas.net/asbc/20090115/3900.html