Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Flash CS4中按比例缩小以适应分辨率,但不向上扩展_Flash_Resize_Resolution - Fatal编程技术网

在Flash CS4中按比例缩小以适应分辨率,但不向上扩展

在Flash CS4中按比例缩小以适应分辨率,但不向上扩展,flash,resize,resolution,Flash,Resize,Resolution,我的女朋友是一名平面设计师,目前正在一家网站上工作。她不知道任何HTML或CSS,只熟悉Flash,所以她正在用Flash构建整个网站。应该注意的是,我是一名开发人员,对HTML、CSS或Flash的使用经验接近0 工作进展顺利,但在我帮助她部署站点(通过文件->发布)后,我们遇到了一些问题。她以1000x750像素制作了.swf电影。在我的1920x1200的24英寸显示器上检查了结果网站后,事情看起来真的是像素化了(电影使用图像,而不是矢量图形)。没问题!我想我们应该在Flash的发布选项中

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

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


然而,禁用缩放功能显然带来了一个新问题,即电影现在无法在低成本运行的计算机上正常观看(您所描述的内容没有内置选项,但通过脚本很容易实现,无论是在Flash中还是在JavaScript端。我将在答案的末尾添加一段代码片段,这应该可以帮助您启动并运行

然而,首先,让我建议你应该做些什么。想想当一个用户出现时会发生什么(不管显示器大小)没有他们的浏览器全屏。如果你按照你的描述实施,他们会看到你的网站任意小,这取决于他们的浏览器大小,并且很可能看到一些小到难以辨认和/或无法使用的东西

当然,你可以通过进一步实现Flash停止扩展的最小大小来解决这个问题,但是你开始对用户希望如何查看你的站点进行大量的事后猜测。相反,你应该问,如果用户有一个小显示器(或一个小的浏览器窗口),你会怎么做期望网站能做什么?答案是,显示网站的全尺寸并添加滚动条。我的钱,这是你的网站应该做的

因此,在您的HTML(或Flash的HTML导出设置)中,将SWF嵌入1000x750容器中。这将防止SWF对任何人进行缩放-在您的显示器上,您将看到未缩放的站点居中(或左上对齐或其他),在较小的显示器上,您将看到整个站点未缩放,带有浏览器滚动条

最终,你必须意识到,尽管Flash内容天生具有可伸缩性,但大多数网站都是由文本和图像组成的,而事实并非如此。即使你可以在运行时缩小规模,但这通常不是用户所期望的,而且通常也不会使网站看起来很好


现在,正如承诺的那样,这里有一段Flash AS3代码,它应该给你足够的起点来做任何你喜欢的缩放操作。如果你将Flash发布到一个占据整个浏览器窗口的容器中,并且scalemode设置为“无缩放”,那么它应该会给你想要的效果

//执行初始大小检查
checkStageSize();
//注册以在阶段大小更改时重新检查
stage.addEventListener(Event.RESIZE、onResize、false、0、true);
函数onResize(e:事件){
checkStageSize();
}
//在这里进行缩放
函数checkStageSize():void{
var wid:Number=stage.stageWidth;
var hi:数值=阶段高度;
var needToScaleDown:Boolean=(wid<550);//或其他一些测试
如果(需要缩减){
风险等级:数量=wid/550;
someContent.scaleX=someContent.scaleY=scale;
}否则{
someContent.scaleX=someContent.scaleY=1;
}
}
这假设“someContent”指的是一个容器,其中包含您想要缩放的所有内容,其注册点位于舞台的原点(左上角)。没有简单的方法可以自动缩放整个电影,因此您需要将内容放在一个容器电影剪辑中并进行缩放

请随意将上面的片段放在舞台上的框架动作中,将“someContent”更改为可以缩放的容器,并对其进行处理。但我真的认为,您最终会决定,只显示未缩放的站点更有用

// 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;
    }
}