您所描述的内容没有内置选项,但可以通过脚本轻松实现,无论是在 Flash 中还是在 JavaScript 端。我将在答案的末尾添加一个代码 sn-p,它应该可以让您启动并运行。
不过,首先让我建议您可能应该做的事情。想想当一个用户(不管显示器大小)没有全屏浏览器时会发生什么。如果您按照您的描述实施,他们会看到您的网站大小任意小,具体取决于他们浏览器的大小,并且很可能会看到一些小到难以辨认和/或无法使用的东西。
现在可以肯定,您可以通过进一步实施一个最小尺寸来解决这个问题,低于该尺寸时 Flash 将停止缩放,但随后您开始对用户希望如何查看您的网站进行大量事后猜测。相反,您应该问一下,拥有小型显示器(或小型浏览器窗口)的用户期望网站做什么?答案是全尺寸显示网站并添加滚动条。为了我的钱,这就是你的网站应该做的。
因此,在您的 HTML 中(或在 Flash 的 HTML 导出设置中)将您的 SWF 嵌入到 1000x750 的容器中。这将阻止 SWF 为任何人缩放 - 在您的显示器上,您将看到未缩放的站点在窗口内居中(或左上对齐或其他),而在较小的监视器上,您将看到整个站点未缩放,带有浏览器滚动条.
归根结底,您必须意识到,尽管 Flash 内容本身可以缩放,但大多数网站都是由文本和图像组成的,而事实并非如此。即使您可以在运行时缩小规模,但通常不是用户所期望的,并且通常不会使网站看起来不错。
现在正如所承诺的那样,这里有一个 Flash AS3 代码的 sn-p 代码,它应该可以让您有足够的先机来做任何您喜欢的缩放操作。如果您已将 Flash 发布到占据整个浏览器窗口的容器中,并且将 scalemode 设置为“no scale”,这应该会给您想要的效果。
// perform initial size check
checkStageSize();
// register to re-check when stage size changes
stage.addEventListener( Event.RESIZE, onResize, false, 0, true );
function onResize( e:Event ) {
checkStageSize();
}
// do the scaling here
function checkStageSize():void {
var wid:Number = stage.stageWidth;
var hi:Number = stage.stageHeight;
var needToScaleDown:Boolean = (wid < 550); // or some other test
if ( needToScaleDown ) {
var scale:Number = wid/550;
someContent.scaleX = someContent.scaleY = scale;
} else {
someContent.scaleX = someContent.scaleY = 1;
}
}
这假设“someContent”指的是一个包含您想要缩放的所有内容的容器,其注册点位于舞台的原点(左上角)。没有简单的方法可以自动缩放整部电影,因此您需要将内容放在容器影片剪辑中并对其进行缩放。
随意将上面的 sn-p 放在舞台上的框架动作中,将“someContent”更改为引用您可以缩放的容器,然后玩弄它。但我真的认为你最终会决定只显示未缩放的网站更有用。