舞台大小、屏幕大小和SWF文件尺寸大小

2016-9-7 zhulinan Flash

1. 舞台尺寸(Stage Size:stage.width / stage.height)

舞台(Stage)指的是Flash内容绘制的主区域。这个区域包含所有显示列表上的显示对象,因为所有的显示对象最终都包含在相同的Stage对象上。

stage.width和stage.height属性能给你提供舞台上矩形边界的尺寸。实际上调用getBounds()方法,你能得到同样的结果。

这些区域只计算了被显示对象占用的区域因此未必从原点(0,0)开始计算。例如,如果显示列表上只有一个显示对象且这个显示对象宽100像素高50像素,则stage.width属性返回100而不论该对象的x位置,同样的height属性返回50而不论该对象的y位置。

如果显示列表上什么都没有或者显示列表上所有的显示对象都为空(或者尺寸大小为0),那么stage.width和stage.height都返回0。这就是为什么在程序最最开始(显示列表上没有任何东西时),可以想见这这两个属性的值都为0。

2. 屏幕尺寸(Screen Size: stage.stageWidth / stage.stageHeight)

stage.stageWidth和stage.stageHeight属性显示了flash player当前的可视区域(独立的窗口可视区域或浏览器的插件可视区域)。

尽管这些属性是可读可写的,但是在你的代码中手动设置他们却没有任何效果。用代码设置不会报错,但不会有效果。

通常是当最终用户调整了flash player的大小才会改变这些属性的值。通过监听Event.RESIZE事件,你的程序可以在这些属性值改变时收到通知,该事件由Stage对象派发。

如果你想创建响应可视屏幕变化的弹性布局,那么了解当前的Flash Player大小是很有用的。当需要检查特定显示对象是否在可视区域界限之外时就需要用到这些值。

3. SWF区域大小(SWF Size: loaderInfo.width / loaderInfo.height)

要得到SWF文件的原始width和height值,你必须使用loaderInfo.width和loaderInfo.height。他们是只读属性而且保持不变。这些值在编译时被硬编码到SWF文件中(在编辑时你指定的大小)。

访问这些属性之前必须等待SWF内容(content)成功的加载进来后才能访问:

如果你在加载外部的内容

当你的应用托管着外部SWF模块时,知道SWF原始尺寸很有用,因为这时你可能想知道要为加载的SWF分配多少屏幕空间及原始宽高比。

结论

  • 一般来讲,舞台(Stage)的大小,可视区域的大小以及SWF文件的原始尺寸大小三者之间没有什么联系。
  • 如果你想要知道当前可视区域的确切大小,使用stage.stageWidth和stage.stageHeight。
  • 如果你想知道SWF文件编译后的原始尺寸大小,使用loaderInfo.width和loaderInfo.height。
  • 如果你想知道整个显示对象所占区域的综合大小,你可以用stage.width和stage.height属性(也能用是getBounds()或者getRect()方法)。

 

实例演示

说明:
  • swf原尺寸400*300,加载尺寸400*300;
  • 红色小球可拖动;
  • 小球在不同位置时(如可视区域边缘和内部),stage.width会有变化;
  • “stage.displayState = "fullScreen";”这句只能在swf的MouseClick事件中触发,js调用无效;
改swf尺寸:

下载实例

网站备案号:京ICP备11043289号-1 北京市公安局网络备案 海1101084571
版权所有 北京育灵童科技发展有限公司 Copyright © 2002-2018 www.elight.cn, All Rights Reserved