Flash 阶段调整大小并获得正确的变量

Flash 阶段调整大小并获得正确的变量,flash,actionscript-3,stage,Flash,Actionscript 3,Stage,在我的Flash应用程序(AS3)中,我希望获得舞台的大小并使用它,这样我的对象(用户控制的对象)就不会超出屏幕。但是,当我使用: stage.stageWidth; stage.stageHeight; 我得到的值实际上不是我想要的。他们给我舞台的大小,但如果我调整窗口的大小,数字也会改变。现在,在html页面中,我认为这无关紧要,因为用户无法调整它的大小。。。但是,我希望它比依赖窗口大小更可靠。我还尝试使用: stage.width; stage.height; 然而,这些给了我“801

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

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

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


所以我的问题是,我如何才能得到舞台的大小,而不考虑将窗口的大小调整为800乘600?(可能隐藏在这个问题中的是,“为什么我得到801和601?”以及“我能阻止人们调整窗口大小吗?”)呸!谢谢大家!

首先,了解stage.stageHeight-stage.stageWidth和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

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

如果您确实希望在html标记中允许height=“100%”和width=“100%”,那么您有两个选项

  • 制作一个假象舞台的电影剪辑。它将是800x600。不要在舞台上添加东西,而是将它们添加到这个MovieClip(比如说它被称为myStage。)现在,所有将对象保留在舞台内的逻辑都应用到myStage MovieClip

  • 您可以在AS3代码中输入常量。例如:


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

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

    我知道这已经有好几年的历史了,但我在胡闹,我肯定错过了什么:在我的HTML页面中,我用常量(
    )指定高度和宽度,事实上,在我的浏览器中,Flash对象显示在一个大小相同的框中。但是,当我检查
    stage.stageWidth
    stage.stageHeight
    时,我得到了800x600。发生了什么事?
    stage.align = StageAlign.TOP_LEFT;  // or StageAlign.TOP
    stage.scaleMode = StageScaleMode.NO_SCALE;