1

我需要的是利用屏幕的所有区域,与用户的屏幕比例无关。默认情况下,Air 应用程序由内向外按比例缩放。如果我们在 Android 中没有如此不同的屏幕尺寸和比例,那就太好了。

愤怒的小鸟是我所说的流畅布局的一个很好的例子,它总是相应地缩放/缩放三层(前、游戏和背景层)。

我的应用程序主要是一个基于界面的游戏,用户必须看到一些信息并点击一些按钮。我想我可以将我的比例主要基于用户屏幕的宽度,并在需要时使用滚动。问题是如何做到这一点。

4

1 回答 1

4

流体/液体/响应式布局可能意味着某种布局管理器。

此功能内置于 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”例如。

于 2012-07-08T01:19:35.783 回答