方法:
var newScreen:SetScreen=new SetScreen();//定义控制屏幕的实例
newScreen.SetScale(stage,4); //设置舞台是否进行缩放
newScreen.SetFull(stage);//设置全屏时,因为FlashPlayer安全沙箱问题,
此句必须写在一个侦听器中执行,简单的说就是写在一个按纽的触发动作中.只有这样才能执行
*/
package com{
import flash.display.*;
import flash.geom.Rectangle;
import flash.events.Event;
//此类只用了一个 rightScale();在初始时根据网页窗口大小确定相应的缩放设置,全屏效果相同文件夹中FullScreen.as单独设置
public class SetScreen {
private var _stage:Object;
public function SetScreen(stage:Object){
_stage=stage;
_stage.addEventListener(Event.RESIZE, resizeHandler);//当窗口改变大小时执行
rightScale();//这一句代码(在CS4版本中)放到上句代码上面,在初始化进,不执行,不知道什么原因.
}
//全屏设置
public function SetFull(){ //_stage为形参,传递stage
if(_stage.displayState==StageDisplayState.NORMAL){
_stage.displayState = StageDisplayState.FULL_SCREEN;
}else{
_stage.displayState = StageDisplayState.NORMAL;
}
}
//退出全屏
public function SetNormal(){
if(_stage.displayState==StageDisplayState.FULL_SCREEN){
_stage.displayState = StageDisplayState.NORMAL;
}else{
//不是全屏,不需要退出全屏状态
}
}
//注,如果同一个按纽控制"全屏"和"非全屏"状态下切换,将退出全屏的代码整合到全屏设置代码的else部分,即可。
/*
StageScaleMode.EXACT_FIT -- 整个 Flash 应用程序在指定区域中可见,但不尝试保持原始高宽比。 可能会发生扭曲。
StageScaleMode.SHOW_ALL -- 整个 Flash 应用程序在指定区域中可见,且不发生扭曲,同时保持应用程序的原始高宽比。 应用程序的两侧可能会显示边框。
StageScaleMode.NO_BORDER -- 整个 Flash 应用程序填满指定区域,不发生扭曲,但有可能进行一些裁切,同时保持应用程序的原始高宽比。
Sta
geScaleMode.NO_SCALE -- 整个 Flash 应用程序的大小固定,因此,即使播放器窗口的大小更改,它也会保持不变。 如果播放器窗口比内容小,则可能进行一些裁切。
*/
//设置缩放形式
public function SetScale(N:Number=4){ //如果没有指定N的值,那么N为默认值4
switch (N) {
case 1:
_stage.scaleMode=StageScaleMode.EXACT_FIT;
break;
case 2:
_stage.scaleMode=StageScaleMode.SHOW_ALL;
break;
case 3:
_stage.scaleMode=StageScaleMode.NO_BORDER;
break;
case 4:
_stage.scaleMode=StageScaleMode.NO_SCALE;
break;
default:
trace("屏幕缩放形式参数设置有错误,范围在1-4");
break;
}
}
//resize
private function resizeHandler(event:Event):void {
rightScale();
}
private function rightScale():void{//相适应的缩放比例
trace("stageWidth: " + _stage.stageWidth + " stageHeight: " + _stage.stageHeight);
if(_stage.stageHeight<780){ //判断屏幕大小进行缩放设置
SetScale(2);
}else{
SetScale(4);
}
}
}
}