Flash Builder - получить ширину сцены - PullRequest
2 голосов
/ 30 июля 2011

Я создаю приложение AIR во Flash Builder и мне нужно получить что-то вроде stage.stageWidth Но stage.stageWidth не работает, а nativeWindow.width возвращает ширину окна - мне нужна ширина моего контента / сцены.Есть ли способ?

спасибо

1 Ответ

1 голос
/ 30 июля 2011

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 (ранее) я заметил, что не задание этих свойств приводило к искаженным результатам при настройке положения объекта и чтении высоты / ширины на сцене, и по моей причине это, вероятно, было связано с масштабированием.По какой-то причине сцена могла перемещаться по оси X / Y внутри NativeWindow, и, хотя это больше не так, в любом случае это хорошая практика.Надеюсь, это поможет.

...