Flash构建器 - 获取舞台宽度

时间:2011-07-30 14:02:59

标签: flash air flash-builder stage

我正在Flash Builder中构建AIR应用程序,需要获得类似stage.stageWidth的内容 但是stage.stageWidth不起作用而nativeWindow.width返回窗口的宽度 - 我需要内容/舞台的宽度。有什么办法吗?

感谢

1 个答案:

答案 0 :(得分:1)

stage.stageWidth应返回整个舞台的宽度,该宽度应与窗口的大小几乎相同,减去镶边。如果要获取添加到舞台的内容的所有内容,那么最简单的方法是将单个容器添加到舞台并向其添加所有对象,然后检查该容器的宽度/高度。这将准确地告诉您已创建并添加到显示列表中的所有对象的累积宽度/高度(在此容器内或其中一个子容器中)。

或者,如果您正在使用文档类,那么该文档类本质上是默认添加到舞台的容器,因此将事物添加为该文档类的子项而不是添加到舞台。然后,检查文档类的宽度/高度。例如:

package com.katruax.collageapp 
{
    import flash.display.MovieClip;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    /**
     * ...
     * @author Jesse Nicholson
     */
    public class MyApp extends MovieClip
    {       

    public function MyApp() 
    {       
        if (stage) {
            init();
        }else {
            addEventListener(Event.ADDED_TO_STAGE, init);
        }           
    }

    private function init(e:Event = null):void 
    {       
            //Set the alignment and scale mode of the stage
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;


            var movieClipA:MovieClip = new SomeLibraryMovieClip1();
            var movieClipB:MovieClip = new SomeLibraryMovieClip2();
            this.addChild(movieClipA);
            this.addChild(movieClipB);
            trace(this.height, this.width);
    }   

}

请注意,我设置了舞台比例模式和对齐模式。这是因为我注意到在AIR 1.0(当天回来)中没有设置这些属性导致在舞台上设置对象位置和读取高度/宽度时导致结果偏差,并且在我的原因中可能是因为缩放。由于某些原因,舞台似乎能够沿着NativeWindow内部的X / Y进行翻译,虽然情况可能不再如此,但无论如何这都是很好的做法。希望这会有所帮助。