flash as3 获取文档场景大小(注意不是舞台)

1 篇文章 0 订阅
0 篇文章 0 订阅

通过测试

this.width1367;stage.stageWidth1366;getrect(x=-1, y=-1, w=1367, h=401);globalToLocal(x=0, y=0);localToGlobal(x=0, y=0);this.loaderInfo.width550;this.loaderInfo.content.stage.width1367;this.loaderInfo.content.width1367


根据浏览器缩放情况来观察

this.width838.55;stage.stageWidth747;getrect(x=-1, y=-1, w=838.55, h=401);globalToLocal(x=0, y=0);localToGlobal(x=0, y=0);this.loaderInfo.width550;this.loaderInfo.content.stage.width838.55;this.loaderInfo.content.width838.55
this.width838.55;stage.stageWidth747;getrect(x=-1, y=-1, w=838.55, h=401);globalToLocal(x=0, y=0);localToGlobal(x=0, y=0);this.loaderInfo.width550;this.loaderInfo.content.stage.width838.55;this.loaderInfo.content.width838.55
this.width840.1;stage.stageWidth1366;getrect(x=-1, y=-1, w=840.1, h=401);globalToLocal(x=0, y=0);localToGlobal(x=0, y=0);this.loaderInfo.width550;this.loaderInfo.content.stage.width840.1;this.loaderInfo.content.width840.1

舞台是变化,但是并没有影响元件本身大小

它应该是使用this.loaderInfo.width来得到.


flash 手册

控制舞台缩放比例

当调整 Flash Player 屏幕的大小时,Flash Player 会自动调整舞台内容来加以补偿。Stage 类的 scaleMode属性可确定如何调整舞台内容。此属性可以设置为四个不同值,如 flash.display.StageScaleMode类中的常量所定义。 

对于 scaleMode的三个值(StageScaleMode.EXACT_FIT、StageScaleMode.SHOW_ALL和 StageScaleMode.NO_BORDER),Flash Player 将缩放舞台的内容以容纳在舞台边界内。三个选项在确定如何完成缩放时是不相同的。

  • StageScaleMode.EXACT_FIT 按比例缩放 SWF。 

  • StageScaleMode.SHOW_ALL 确定是否显示边框(就像在标准电视上观看宽屏电影时显示的黑条)。 

  • StageScaleMode.NO_BORDER 确定是否可以部分裁切内容。 

或者,如果将 scaleMode设置为 StageScaleMode.NO_SCALE,则当查看者调整 Flash Player 窗口大小时,舞台内容将保持定义的大小。仅在缩放模式中,Stage 类的 width和 height属性才可用于确定 Flash Player 窗口调整大小后的实际像素尺寸。(在其它缩放模式中,stageWidth和 stageHeight属性始终反映的是 SWF 的原始宽度和高度。)此外,当 scaleMode设置为 StageScaleMode.NO_SCALE并且调整了 SWF 文件大小时,将调度 Stage 类的 resize事件,允许您进行相应地调整。

因此,将 scaleMode设置为 StageScaleMode.NO_SCALE可以更好地控制如何根据需要调整屏幕内容以适合窗口大小。例如,在包含视频和控制栏的 SWF 中,您可能希望在调整舞台大小时控制栏的大小保持不变,而仅更改视频窗口大小以适应舞台大小的更改。以下示例中演示了这一点:


按照这个说法,设置NO_SCALE,放置全局变量然后resize后更新,这是一个比较好的方式

            this.stage.addEventListener(Event.RESIZE, _stageResize);

private function _stageResize(e) {
            _SW = stage.width;
            _SH = stage.height;
            errorTip('sw' + _SW + ';' + stage.stageWidth)
        }


测试结果:

sw1367;747
sw1367;747
sw1367;691
sw1367;635
sw1367;550

由此,这时可以使用stageWidth来获取实际大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值