您所描述的内容没有内置选项,但可以通过脚本轻松实现,无论是在 Flash 中还是在 JavaScript 端。我将在答案的末尾放置一个代码片段,它应该可以让您开始运行。
但是,首先让我建议您可能应该做些什么。想想当一个用户(不管显示器大小)没有全屏浏览器时会发生什么。如果您按照您的描述实施,他们会看到您的网站大小任意小,具体取决于他们的浏览器的大小,并且很可能会看到一些小到难以辨认和/或无法使用的东西。
现在可以肯定的是,您可以通过进一步实现一个最小尺寸来解决这个问题,低于该尺寸 Flash 停止缩放,但随后您开始对用户希望如何查看您的网站进行大量事后猜测。相反,您应该问,拥有小显示器(或小浏览器窗口)的用户希望该站点做什么?答案是全尺寸显示网站并添加滚动条。为了我的钱,这就是你的网站应该做的。
因此,在您的 HTML 中(或在 Flash 的 HTML 导出设置中)将您的 SWF 嵌入到 1000x750 的容器中。这将阻止 SWF 为任何人缩放 - 在您的监视器上,您将看到未缩放的站点在窗口内居中(或左上对齐或其他),而在较小的监视器上,您将看到整个站点未缩放,带有浏览器滚动条.
归根结底,您必须意识到,尽管 Flash 内容本身就是可伸缩的,但大多数网站都是由文本和图像组成的,而事实并非如此。即使您可以在运行时缩小规模,但通常不是用户所期望的,并且通常不会使网站看起来不错。
现在正如所承诺的那样,这里有一段 Flash AS3 代码,它应该可以让您有足够的先机来做任何您喜欢的缩放操作。如果您已将 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”指的是一个包含您想要缩放的所有内容的容器,其注册点位于舞台的原点(左上角)。没有简单的方法可以自动缩放整部电影,因此您需要将内容放在容器影片剪辑中并进行缩放。
随意将上面的片段放在舞台上的框架动作中,更改“someContent”以引用您可以缩放的容器,然后使用它。但我真的认为你最终会决定只显示未缩放的站点更有用。