开发者

Flash builder - get stage width

开发者 https://www.devze.com 2023-03-24 14:47 出处:网络
I\'m building an AIR application in Flash Builder and need to get something like stage.stageWidth But stage.stageWidth doesn\'t work and nativeWindow.width returns width of the window - I need width o

I'm building an AIR application in Flash Builder and need to get something like stage.stageWidth But stage.stageWidth doesn't work and nativeWindow.width returns width of the window - I need width of my content/stage. Is there any way?

th开发者_运维问答anks


stage.stageWidth should return the width of the entire stage, which should be nearly the same size as the window, minus the chrome. If you want to get all the contents of what is added to your stage, then the easiest way would be to add a single container to the stage and add all objects to it, then checking the width/height of that container. This will tell you accurately the cumulative width/height of all objects you've created and added to the display list (inside this container or one of it's children).

Alternatively, if you're using a document class, then that document class is essentially a container that is added to the stage by default, so add things as a child of that document class instead of adding to the stage. Then, check the width/height of the document class. For example:

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);
    }   

}

Note that I set the stage scale mode and align mode. This is because I noticed in AIR 1.0 (back in the day) that not setting these properties resulted in skewed results when setting object position and reading height/width on the stage, and in my cause it was probably because of scaling. The stage appeared to be able to translate along the X/Y inside the NativeWindow for some reason and although this may not be the case anymore, it's good practice anyway. Hope this helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号