【问题标题】:Stage resizing and getting the right variable阶段调整大小并获得正确的变量
【发布时间】:2011-06-12 19:59:27
【问题描述】:

在我的 Flash 应用程序 (AS3) 中,我想获取舞台大小并使用它,这样我的对象(由用户控制)就不会超出屏幕。但是,当我使用时:

stage.stageWidth;
stage.stageHeight;

我得到的值实际上并不是我想要的。他们给了我舞台大小,但如果我调整窗口大小,数字也会改变。现在,在 html 页面中,我认为这并不重要,因为用户无法调整它的大小......但是,我希望它比依赖窗口大小更可靠。我也试过用:

stage.width;
stage.height;

但是,它们给了我“801”和“601”,比我的实际舞台尺寸大一个。当我调整窗口大小时,这些值没有改变,但它们大了一倍。

所以我的问题是,无论将窗口大小调整为始终为 800 x 600,我如何才能获得舞台大小? (也许隐藏在那个问题中的是,“为什么我会得到 801 和 601?”和“我可以阻止人们调整窗口大小吗?”)唷!谢谢!

【问题讨论】:

    标签: flash actionscript-3 stage


    【解决方案1】:

    首先要知道stage.stageHeight - stage.stageWidth and stage.height - stage.width之间的区别

    stage.stageHeight // The real height of the stage
    stage.height // The height of the content on the stage
    

    所以,你得到 801 和 601 的原因是因为舞台上总内容的高度和宽度是 801 x 601。

    现在,关于调整大小的问题。如果您在网络浏览器中显示此内容,则可以设置影片的高度和宽度。将其设置为 800 和 600,而不是 100% 和 100%。现在,无论用户调整浏览器窗口的大小,您的电影都将始终保持相同的大小。

    如果您确实想在 html 标记中允许使用 height="100%" 和 width="100%",那么您有几个选择。

    1. 制作一个将充当伪舞台的影片剪辑。它将是 800 x 600。不是将东西添加到舞台,而是将它们添加到此 MovieClip(比如说它称为 myStage。)现在,将对象保留在舞台内的所有逻辑都应用于 myStage MovieClip。

    2. 您可以将常量放入您的 AS3 代码中。例如:


     public const STAGE_WIDTH:int = 800;
     public const STAGE_HEIGHT:int = 600;
    

    现在,您只需使用这些值而不是 stage.stageHeight 和 stage.stageWidth 值。当然,你需要确保还包括

    stage.align = StageAlign.TOP_LEFT;  // or StageAlign.TOP
    stage.scaleMode = StageScaleMode.NO_SCALE;
    

    【讨论】:

    • 我知道这已经有好几年的历史了,但我搞砸了,我一定遗漏了一些东西:在我的 HTML 页面中,我用常量指定了高度和宽度 (<object width="320" height="240"> ) 实际上,在我的浏览器中,Flash 对象显示在该大小的框中。但是,当我检查 stage.stageWidthstage.stageHeight 时,我得到 800x600。发生了什么事?
    猜你喜欢
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2021-01-30
    • 2011-08-14
    相关资源
    最近更新 更多