2

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

谢谢

4

1 回答 1

1

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

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

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 平移,尽管这可能不再是这种情况,但无论如何这是一种很好的做法。希望这可以帮助。

于 2011-07-30T14:13:17.377 回答