【问题标题】:Scaling down to fit resolution, but not up in Flash CS4缩小以适应分辨率,但在 Flash CS4 中不放大
【发布时间】:2009-09-17 10:17:48
【问题描述】:

我的女朋友是一名平面设计师,目前在网站上工作。她不懂任何 HTML 或 CSS,只熟悉 Flash,所以她用 Flash 构建整个网站。需要注意的是,我是开发人员,对 HTML、CSS 或 Flash 的经验也接近于 0。

工作进展顺利,但在我帮助她部署网站(通过文件->发布)后,我们遇到了一些问题。她制作了 1000x750 像素的 .swf 电影。在我的 24" 显示器上以 1920x1200 检查生成的网站后,事情看起来真的很像素化(电影使用图像,而不是矢量图形)。没问题!我想我们应该在 Flash 的发布选项中禁用缩放,我们会很好。

但是,禁用缩放显然引入了新问题,即现在无法在运行低 (

我想我们正在寻找的行为只是缩小电影以适应观看计算机的分辨率/浏览器窗口,而不是放大。不过,Flash (CS4) 似乎并未将此作为选项包含在其发布选项中。是否有任何简单的方法可以实现这种行为?

【问题讨论】:

    标签: flash resize resolution


    【解决方案1】:

    您所描述的内容没有内置选项,但可以通过脚本轻松实现,无论是在 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”更改为引用您可以缩放的容器,然后玩弄它。但我真的认为你最终会决定只显示未缩放的网站更有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多