缩放后检索原始舞台宽度和高度

时间:2011-07-11 11:59:11

标签: actionscript-3 actionscript size stage

有谁知道如何检索在编制Air / Flash应用程序期间设置的“ORIGINAL”阶段高度和宽度

我已将应用程序设置为编译为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返回了我认为在这个例子中不正确的东西,需要一个替代方案。

调整大小并没有帮助,因为事后我需要它。

2 个答案:

答案 0 :(得分:7)

设置时

stage.scaleMode = StageScaleMode.SHOW_ALL;

Event.RESIZE未发送stage,因为没有调整阶段的调整。

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

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

如果您想获得屏幕尺寸(设备重新分辨率):

Capabilities.screenResolutionX

scaleMode的

SHOW_ALL参数表示应用程序要拉伸到闪存显示大小。

如果您想为不同尺寸的屏幕/闪光灯显示阶段更改某些内容, 您需要使用NO_SCALE属性。

P.S。对于宽度参数,适用相同的规则。

<强>更新

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

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.

答案 1 :(得分:3)

@Jevgenij Dmitrijev解决方案有点像黑客攻击。 (无罪)

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

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

在较旧的动作脚本论坛上找到它,这是我自己忘记的事情。

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