您的位置:首页 > 其它

flash as3 不同浏览器获取正确的舞台宽度和高度

2014-09-17 15:42 260 查看
public class Detective extends Sprite

{

public static var APP_WIDTH:int = 900;//480;

public static var APP_HEIGHT:int = 600;//800;

public static var designwidth:Number = 900;//720;

public static var designheight:Number = 600;//1280;

public static var stagewidth:Number;

public static var stageheight:Number;

private static var _instance:Detective;

public static function getInstance():Detective

{

if(!_instance)

{

throw("please use getInstance");

}

return _instance;

}

public function Detective()

{

stage.scaleMode = StageScaleMode.NO_SCALE;

stage.align = StageAlign.TOP;

var menu: ContextMenu = new ContextMenu();

var item: ContextMenuItem = new ContextMenuItem(Config.appendVersion());

menu.customItems.push(item);

menu.hideBuiltInItems();

this.contextMenu = menu;

if(stage){

addHandler(null);

trace( "stage!=null"+"stagewidth="+stage.stageWidth+"stageheight="+stage.stageHeight);//ie9+,chrome浏览器时,会执行这里

}else{

trace( "stage==null"+"stagewidth="+stage.stageWidth+"stageheight="+stage.stageHeight);//ie6-8浏览器时,会执行这里

addEventListener(Event.ADDED_TO_STAGE, addHandler);

}

}

private function addHandler(event:Event):void

{

if(event != null){

removeEventListener(Event.ADDED_TO_STAGE, addHandler);

}

if(stage.stageWidth == 0 || stage.stageHeight == 0){

trace( "stage.stageWidth == 0"+"stagewidth="+stage.stageWidth+"stageheight="+stage.stageHeight);//ie6-8浏览器时,会执行这里

stage.addEventListener(Event.RESIZE, resizeHandler);

}

else{

init();

}

}

private function resizeHandler(event:Event):void

{

if(stage.stageWidth > 0 && stage.stageHeight > 0){

trace( "stage.stageWidth == 0"+"stagewidth="+stage.stageWidth+"stageheight="+stage.stageHeight);//ie6-8浏览器时,会执行这里

stage.removeEventListener(Event.RESIZE, resizeHandler);

init();

}

}

private function init():void

{

//根容器已经添加到stage,可以正确获取舞台宽高 了 (兼容所有浏览器)

stagewidth = stage.stageWidth;

stageheight = stage.stageHeight;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: