最近在研究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" />

最好在自己的代码初始化的时候加上上面两句代码。

这个就说到这吧。。。