我需要的是利用屏幕的所有区域,与用户的屏幕比例无关。默认情况下,Air 应用程序由内向外按比例缩放。如果我们在 Android 中没有如此不同的屏幕尺寸和比例,那就太好了。
愤怒的小鸟是我所说的流畅布局的一个很好的例子,它总是相应地缩放/缩放三层(前、游戏和背景层)。
我的应用程序主要是一个基于界面的游戏,用户必须看到一些信息并点击一些按钮。我想我可以将我的比例主要基于用户屏幕的宽度,并在需要时使用滚动。问题是如何做到这一点。
我需要的是利用屏幕的所有区域,与用户的屏幕比例无关。默认情况下,Air 应用程序由内向外按比例缩放。如果我们在 Android 中没有如此不同的屏幕尺寸和比例,那就太好了。
愤怒的小鸟是我所说的流畅布局的一个很好的例子,它总是相应地缩放/缩放三层(前、游戏和背景层)。
我的应用程序主要是一个基于界面的游戏,用户必须看到一些信息并点击一些按钮。我想我可以将我的比例主要基于用户屏幕的宽度,并在需要时使用滚动。问题是如何做到这一点。
流体/液体/响应式布局可能意味着某种布局管理器。
此功能内置于 Flex。
每个 Flash,更具体地说,根据您的要求,听起来像一些基本的缩放和定位是您想要的。
图层
正如您所指出的,不同的层每次缩放都有不同的要求:
背景和游戏可能是单层;但是,您可能希望对前台用户控件进行不同的限制,以提高可读性和交互性。
搭建舞台
如果你想控制缩放,你应该设置:
import flash.display.StageAlign;
import flash.display.StageScaleMode;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
这也有助于移动设备在纵向和横向之间交换的方向改变。
浏览器可以调整大小;所以,你需要监听 resize 事件:
stage.addEventListener(Event.RESIZE, resizeHandler);
stage.dispatchEvent(new Event(Event.RESIZE));
function resizeHandler(event:Event=null):void
{
/* scale code ... */
}
定位
顶部和左侧定位总是很容易,因为左上角是 0x0 坐标。右下角需要DisplayObject
从舞台上减去一个宽度。
右对齐示例:
mc.x = stage.stageWidth - mc.width;
底部对齐示例:
mc.y = stage.stageHeight - mc.height;
把东西放在舞台中央:
mc.x = (stage.stageWidth * 0.5) - (mc.width * 0.5);
mc.y = (stage.stageHeight * 0.5) - (mc.height * 0.5);
缩放
您需要确定您的约束是什么,以避免舞台上出现空白/空白区域。
这可以使用比率变量来实现:
var ratio:Number = 1.0;
比例缩放:
ratio = stage.stageWidth / gameMovieClip.width;
gameMovieClip.scaleX = ratio;
gameMovieClip.scaleY = ratio;
拉伸显示对象以适应舞台:
gameMovieClip.scaleX = stage.stageWidth / gameMovieClip.width;
gameMovieClip.scaleY = stage.stageHeight / gameMovieClip.height;
最佳拟合算法需要在一个范围内拟合显示对象的最小约束。有一些库可以帮助解决这个问题,例如Greensock auto fit area。
虚拟相机
虚拟相机在 Flash 中很流行。这个概念是您设计您的视图,然后平移和缩放相机以显示特定区域。
面向非编码人员的 O'Reilly ActionScript
虚拟相机 FLA 示例:
虚拟相机示例:
谷歌“Flash 虚拟相机”或“Flash v-cam”例如。