获得舞台的尺寸

时间:2013-07-14 14:08:46

标签: flash-cs6

我想要我的“舞台”或文档的全部尺寸或任何它的名称。我刚开始使用flash,我一直在寻找并没有成功。

我最接近的是“stage.height”,但它没有做我想要的。我意识到“stage.height”返回我对象的2倍大小。我想要实现的是确保对象无法进入屏幕之外。我使用他们的示例移动动作脚本代码。我试图修改它以满足我的需要,这是编辑过的代码(其中stage.height没有按预期工作,也没有宽度)......

function fl_MoveInDirectionOfKey(event:Event)
{
    if (upPressed)
    {
        Ball.y = Math.max(0, Ball.y - 5);
    }
    if (downPressed)
    {
        Ball.y = Math.min(Ball.y + 5, stage.height);
    }
    if (leftPressed)
    {
        Ball.x = Math.max(0, Ball.x - 5);
    }
    if (rightPressed)
    {
        Ball.x = Math.min(Ball.x + 5, stage.width);
    }
} 

1 个答案:

答案 0 :(得分:2)

你应该使用“stage.stageWidth”作为舞台的宽度,或者“stage.stageHeight”作为舞台的高度。

请记住,如果您在Flash项目中使用嵌套的影片剪辑,并且想要控制其中的某些对象;它包含您的对象设置为零值的影片剪辑的x和y坐标更好;如果x和y坐标设置为另一个值,则必须找到一些计算来实现您想要做的事情。

如果您想了解stage.stageWidth和stage.width或stage.stageHeight和stage.height之间的差异,请查看以下链接:

Difference between calling stage.width and stage.stageWidth?

Difference between stage.width and stage.stageWidth

为了更好地理解,我用一个例子来描述它。

想象一下,我们有一个1024px宽度和768px高度的舞台。我们在舞台上以30px x和70px y坐标创建一个影片剪辑元件。现在我们在该影片剪辑中添加一些内容,并将x和y坐标设置为零值。如果我们返回根时间轴(主阶段),影片剪辑的对象设置在30px x和70px y坐标不是0.如果我们想要将对象的x和y坐标设置为舞台的x和y坐标,我们必须为x设置-30px,为y设置-70px。在这种情况下,我们必须做一些计算,以便在影片剪辑中对我们的对象进行正确控制,以便我们做什么。

我为你创造了一个例子。请检查一下:

Objects Movement

如果您希望在舞台调整大小时对象保留在舞台上,则必须将舞台的“缩放模式”更改为 无比例 “对齐”的舞台 “左上角” 如下:

import flash.display.StageScaleMode;

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;

然后,您必须在舞台上添加“调整大小”事件。

import flash.events.Event;

stage.addEventListener(Event.RESIZE, stage_Resize);

function stage_Resize(event:Event):void
{
    enter your codes here
}

通过添加Resize事件,当最终用户调整舞台大小时,将触发Resize事件中的代码。

请查看以下示例:

4Shared -> Resize Example

SendSpace -> Resize Example