我希望我的应用程序根据屏幕大小自动调整其大小。我希望我的应用程序能够自动适应任何屏幕大小。我正在申请移动设备,我该怎么做?我在flash上相当新,所以请稍微简单一点!
答案 0 :(得分:2)
是的,没有简单的答案,但基本要点是:
stage.addEventListener(Event.RESIZE,onStageResize);
function onStageResize(e:Event):void {
// Use stage size for placing elements to their position..
// Position to left top
element1.x = 10;
element1.y = 10;
// Position to right top
element2.x = stage.stageWidth - element2.width - 10;
element2.y = 10;
// Position element to center and make it's width to scale with stage..
element3.width = stage.stageWidth - 20;
element3.x = 10;
element3.y = stage.stageHeight / 2 - element3.height / 2;
}
要缩放元素,请将它们放在Sprite或MovieClip中,并缩放该元素,如:
element.scaleX = 1.6; // scale 1 = 100% 2 = 200% etc
element.scaleY = element.scaleX;
我通常为可视子类/组件创建公共函数“resizeElements(e:Event = null):void”,并从主线程调用它。在该函数中,对象可以自行调整大小。
答案 1 :(得分:1)
除了@ hardy的回答之外,在舞台上设置以下变量也很重要:
// disables default 100% scaling of entire swf
stage.scaleMode = StageScaleMode.NO_SCALE;
// disables default align center
stage.align = StageAlign.TOP_LEFT;
此外,由于最初的问题是关于启动时调整大小,这是移动部署,因此调用onStageResize()非常重要;一次手动,因为最初可能不会触发RESIZE事件。这需要改变:
function onStageResize(e:Event):void { ... }
到
function onStageResize(e:Event = null):void { ... }
答案 2 :(得分:0)
说“自动缩放到屏幕”太笼统了。此声明强加的要求在应用程序之间完全不同,具体取决于他们需要做什么。没有简单的答案。
如果您的应用具有主要内容画布区域,是否要缩放到适合该区域的内容?您是否希望保持内容大小相同并显示更多内容?也许两者 - 你可能想要显示更多的点,然后在有更多空间的情况下进行缩放。
您希望自己的用户界面做什么?对话可以缩小/增长并保持中心。也许你想完全回流它们?
你有一个光滑的用户界面吗?也许是一个带有一组按钮的菜单。按钮的大小是否与屏幕成比例?他们之间的差距怎么样?如果屏幕比例不同,那么如果你将它们缩放以适应它们不再起作用怎么办?
关键是,没有一个简单的答案。对于基本布局,有一些UI框架可以帮助您进行放置和缩放,但您仍需要确定应用程序的行为方式。这完全取决于应用程序以及您的预期设计。