最近在研究Flash编程,所以一直在看AS3.0相关的书籍,
也在拿小例子练手,写此文章的目的仅仅是为了方便以后自己
在出现问题的时候有资料可查,复习之用。当然也为了和大家共同
交流心得共同进步。
现在的Flash多数是应用到其它的应用程序内部作为插件来运行的,
其中最常见的就是插入浏览器中使用。
而浏览器中最常使用object(IE)和embed(非IE)标签来实现。
下面来说stage.stageWidth+"-------"+stage.stageHeight的值与
HTML标签属性设置的关系,上面2个属性,从字面看,显而易见,
表示舞台的宽高。
在我写程序的过程中发现,只有在<param name="scale" value="noscale" />
的时候,stage.stageWidth和stage.stageHeight才会随着object标签的
width="320" height="280"属性设置改变而改变,这时候才是实际的舞台宽高。
其它任何的属性值,stage.stageWidth和stage.stageHeight返回的都是文档在
发布成swf时候的大小尺寸,或者说在Flash CS系列之中打开FLA的时候的舞台宽高。
无论object标签的width="320" height="280"属性设置成多少,返回值都一样。
有一点需要说明的是
AS3.0中脚本可以覆盖object标签的属性设置,如上面可以使用如下代码:
stage.scaleMode = StageScaleMode.NO_SCALE;也能起到相同的作用,
设置成这个属性之后,里面内部加载的swf均按照原始尺寸展现,即使你修改外面的swf容器的
宽高也不管用,此属性的意义就是不缩放。
这里面我遇到了一个问题,找了好久才找到原因,希望大家引以为戒
就是我更改了object标签的width="300" height="250",但是发现输出的stage.stageWidth和stage.stageHeight
不是300和250,在此也不浪费大家的时间了,还是我说原因吧,原因就在于现在的浏览器都提供一个页面的
缩放功能,我发现这个浏览器自带的缩放功能会影响stage.stageWidth和stage.stageHeight的输出值。
下次大家在遇到同样的问题时,希望记得看看是不是浏览器本身页面被缩放了。
还有就是这两句通常在一起:
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;//将素材定位于左上角(0,0)位置。
很多情况下我们是不需要缩放功能的,为了防止忘记在写object标签的时候忘记写属性<param name="scale" value="noscale" />
最好在自己的代码初始化的时候加上上面两句代码。
这个就说到这吧。。。