0

有谁知道我如何检索在编译 Air/Flash 应用程序期间设置的“原始”舞台高度和宽度

我已将应用程序设置为编译为 1920x1080;

我有 stage.scaleMode = StageScaleMode.SHOW_ALL;

和 stage.nativeWindow.maximize();

但是当我跟踪 stage.stageWidth 时,我得到 1280,这是屏幕的分辨率。

我希望得到1920。

我不能使用 stage.width 或 stage.getBounds(stage) 因为这会返回 6000。由于项目被屏蔽在屏幕之外。

由于 stage.stageWidth 是屏幕分辨率,我希望我可以使用它并使用 stage.scaleX 在数学上计算出原始分辨率。但即使 SHOW_ALL 缩放整个应用程序,stage.scaleX 也会返回 1。

我很想将 1920x1080 硬编码到应用程序中,但是此代码正在用于各种尺寸的多个应用程序中。而现在我已经被难住了。

欢迎任何帮助。

编辑:我知道“全部显示”是做什么的,你不需要告诉我。

我也知道 stage.width 和 stage.stageWidth 做了什么,但是 stage.stageWidth 正在返回我认为在这个例子中不正确的东西,需要一个替代方案。

调整大小也无济于事,因为事后我需要它。

4

2 回答 2

7

当您设置时:

stage.scaleMode = StageScaleMode.SHOW_ALL;

没有Event.RESIZE从 调度stage,因为舞台没有调整大小。

stage.width- 是一个参数,它为您提供放置在其上的所有显示对象的大小(将舞台上放置的所有内容想象为一个 MC)。

stage.stageWidth- 这个参数只会给你默认的宽度(因为没有 REIZE 发生,因为你有scaleMode=SHOWALL,通常它会返回可见的 flash 阶段大小。

如果要获取屏幕大小(设备 rezolution):

Capabilities.screenResolutionX

SHOW_ALLscaleMode 的参数表示应用程序拉伸到 Flash 显示大小。

如果你想为不同尺寸的屏幕/flash展示阶段改变一些东西,你需要使用NO_SCALE属性。

ps 对于宽度参数同样适用。

更新

经过一些测试找到了解决方案:

stage.scaleMode = StageScaleMode.NO_SCALE; // reseting the scale to get actual width
ACTUAL_STAGE_WIDTH = stage.stageWidth; // this is where you getting the width you need
stage.scaleMode = StageScaleMode.SHOW_ALL; // setting back the scale.
于 2011-07-11T12:56:01.327 回答
3

@Jevgenij Dmitrijev 解决方案有点骇人听闻。(没有冒犯的意思)

获取已发布 SWF 大小的真正答案是使用

this.loaderInfo.width;
this.loaderInfo.height;

在一个较旧的 actionscript 论坛上找到它,这是我自己忘记的东西。

你可以在 ASdoc 上查找加载程序信息,他们会给你一个深入的解释。

于 2012-02-05T11:29:44.003 回答