Actionscript 3 ActionScript 3-通过浏览器动态调整电影剪辑大小,但保持比例
我有一个尺寸为500x400的电影剪辑。实例名为:“main”。我有以下代码:Actionscript 3 ActionScript 3-通过浏览器动态调整电影剪辑大小,但保持比例,actionscript-3,dynamic,resize,movieclip,Actionscript 3,Dynamic,Resize,Movieclip,我有一个尺寸为500x400的电影剪辑。实例名为:“main”。我有以下代码: import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.events.Event; stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener (Event.RESI
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener (Event.RESIZE, resizeHandler);
// initialize sizing
resizeHandler (null);
function resizeHandler (event:Event):void {
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;
main.height = sh;
main.width = sw;
}
我怎样才能使MovieClip的大小比例和最大尺寸保持在500x400 这段代码应该可以完成这项工作:
if (stage.stageWidth/500 < stage.stageHeight/400)
{
main.scaleX = stage.stageWidth/500;
main.scaleY = main.scaleX;
}else{
main.scaleX = stage.stageHeight/400;
main.scaleY = main.scaleX;
}
if(stage.stageWidth/500
这是我脑子里想不出来的,所以不是100%正确的语法,但你应该明白:
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
var ratio:Number = Number(stage.stageWidth)/stage.stageWidth;//you need to check if stage isn't null and this ratio is valid
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener (Event.RESIZE, resizeHandler);
// initialize sizing
resizeHandler (null);
function resizeHandler (event:Event):void {
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;
//make with width same as stage
main.width = sw;
main.height = sh/ratio;//keep height proprtional
//or you can try the other way around if you want - make main.height = sh and main.width = sh * ratio;
}
不管电影剪辑的比例如何,下面的代码都应该执行此操作。如果您希望强制执行500乘以400的比例,您可以将movieClipRatio指定为500/400
import flash.display.StageScaleMode;
import flash.display.StageAlign;
import flash.events.Event;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener (Event.RESIZE, resizeHandler);
var movieClipRatio:Number = main.width / main.height;
// initialize sizing
resizeHandler (null);
function resizeHandler (event:Event):void {
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;
if ( sw == 0 || sh == 0 ) {
return; // special case to avoid
}
var stageRatio:Number = sw / sh;
if ( stageRatio > movieClipRatio ) {
// stage is proportionally wider than movieClip
// resize by height
main.width *= sh / main.height;
main.height = sh;
} else {
// stage is proportionally taller than movieClip
// resize by width
main.height *= sw / main.width;
main.width = sw;
}
}
当stage可用时,应该将stageWidth/stageHeight比率存储在一个变量中,然后在resizeHandler中将其重新用于新的维度。简单来说,其他缩放模式可能是handyThanks,但我不知道ActionScript3能不能做到这一点。你的代码也会做同样的事情,就像我的代码一样。比例没有保持住。MovieClip的最大大小不起作用。Flash文档大小为:500x400,发布设置为:HTML-默认比例(全部显示)和100x100%的维度。比例有效!但是如何为MovieClip设置大小限制(500x400)?如果您是MovieClip的尺寸默认为500x400(无缩放),并且希望保持相同的大小,那么为什么要在调整大小处理程序中更改宽度和高度?您是否通过注释掉调整大小处理程序中的这两行来获得所需的行为?我希望对最大大小500x400进行限制。例如,如果我有1920x1200分辨率,我的MovieClip将有1300x1000(近似大小)。我想在浏览器窗口的大小低于分辨率时调整MovieClip和constain比例,并将最大大小设置为500x400。我希望你能理解我想说的话。我希望从一开始就说清楚。试试@Tianzhen Lin的答案,看起来很准确。此外,如果文件大小不是问题,并且您使用的是Flash IDE,那么您可以使用UILoader组件并传递MovieClip的Liinkage id