说到对齐方式,一般联想到的无非四种:左对齐、右对齐、上对齐和下对齐。通过其中的两两组合,可以衍生出:左上角对齐、左下角对齐、右上角对齐和右下角对齐。在css中这些类型很常见,比如绝对定位:
.left_top {
position: absolute;
left: 0;
top: 0;
}
.left_bottom {
position: absolute;
left: 0;
bottom: 0;
}
.right_top {
position: absolute;
right: 0;
top: 0;
}
.right_bottom {
position: absolute;
right: 0;
bottom: 0;
}
我们很容易用css来作出四个角对齐或者四个方向居中对齐的效果。但是在as当中,则有一点点麻烦了。
说到对齐之前,首先要接触到StageScaleMode这个常量,它被赋给stage.scaleMode,用以指定整个swf程序的缩放模式,默认的是NO_SCALE,即不缩放。详细示例如下图:

当然StageScaleMode还有保持高宽比的SHOW_ALL常量以及保持高宽比并可能进行裁剪的NO_BORDER常量。上面只例举了两种对立的情形。当涉及到StageAlign的时候,我们默认为StageScaleMode就是默认的NO_SCALE,这样对齐才有意义。
在css中,也经常会遇到类似的情况。一个div区域有自己的高宽,超出区域范围之外的用overflow来控制可见度。譬如是右上角对齐的css,例子是这样:
<style>
.outer{position:relative;width:100px;height:100px;border:1px solid #f00;overflow:hidden;}
.inner{position:absolute;top:0;right:0;width:200px;height:200px;background:#000;}
</style>
<div class="outer">
<div class="inner"></div>
</div>
在as当中,想要做到同样的效果的话,可以借助StageAlign这个常量,它被赋给stage.align属性,所起的作用就和上面说的css对齐方式一样。同样是右上角对齐,我们只要在文档类中声明一下即可达到效果:
package {
import flash.display.*;
public class Main extends Sprite {
public function Main():void {
stage.align = StageAlign.TOP_RIGHT;
}
}
}
用图片做示例,页面嵌入一个原始大小为50*50的swf文件,假如外部容器(object标签或者emebed标签)的高宽值被改变,swf仍然是右上角对齐:

依此我们便可以作出自由指定显示swf内容范围的功能,比如初始swf原始大小为100*100,但是外部容器只设定宽高为50*50。当为右上角对齐时,swf只显示右上区域的50*50部分。当某件事发生时(比如鼠标点击一个按钮),外部容器款高变成100*100,如此便能看见全部的swf了。

回复自“web中的区域对齐”
发表回复