Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Какой размер сцены по-умолчанию и как его поменять (http://www.flasher.ru/forum/showthread.php?t=211491)

nelco 10.09.2015 22:19

Какой размер сцены по-умолчанию и как его поменять
 
Код AS3:

package zoo
{
        import flash.display.Sprite;
 
        public class Main extends Sprite
        {
                private var _objectStage:Sprite = new Sprite();
 
                public function Main()
 
                {
                        addChild(_objectStage);
 
                        stage.stageWidth = 1024;
                        stage.stageHeight = 768;
                        _objectStage.width = 1024;
                        _objectStage.height = 768;
 
 
                        trace (stage.stageWidth, stage.stageHeight, _objectStage, _objectStage.width);
 
                }
 
        }
 
}

трейс выводит всё равно 800 на 600 и _objectStage.width = 0, пробовал ставить _objectStage.stage.width и другие разные варианты (stage.Stagewidth и т.д)... не пойму, как работает этот stage? при нажатии на TEST PROJECT из FlashDevelopa получается что по-умолчанию создаётся объект stage с stage.width = 800, stageHeight = 600? что это за объект? какой у него тип? в руководстве написано: КОРНЕВЫМ ЭЛЕМЕНТОМ СПИСКА ОТОБРАЖЕНИЯ ЯВЛЯЕТСЯ ЭКЗЕМПЛЯР КЛАССА STAGE, КОТОРЫЙ СОЗДАЁТСЯ АВТОМАТИЧЕСКИ ПРИ ЗАПУСКЕ СРЕДЫ ВЫПОЛНЕНИЯ FLASH, который выступает в качестве внешнего контейнера для всего графического содержимого... значит у него тип данных - DisplayObjectContainer или он расширяет DisplayObjectContainer? как обратиться к его свойствам width и heigth?

GBee 10.09.2015 22:25

Нарисуйте в graphics стейджа прямоугольник нужных вам размеров (можно прозрачный) или добавьте объект. И все будет.

nelco 10.09.2015 22:45

Цитата:

Сообщение от GBee (Сообщение 1186564)
Нарисуйте в graphics стейджа прямоугольник нужных вам размеров (можно прозрачный) или добавьте объект. И все будет.

код
Код AS3:

stage.graphics.drawRect(0, 0, 1024, 768);

выводит ошибку

код
Код AS3:

_objectStage.graphics.drawRect(0, 0, 1024, 768);

делает размер _objectStage.width = 1024

без добавления объекта Sprite c рисованным прямоугольником нельзя изменить размер stage, получается?

Добавлено через 3 минуты
и сейчас я ведь добавил на сцену объект с прямоугольником 1024x768, почему stage.width всё равно остался 800?

udaaff 11.09.2015 00:00

Цитата:

Какой размер сцены по-умолчанию и как его поменять
Например, прописать метатэг в главном классе
Код AS3:

[SWF(backgroundColor="#8FD9E6", frameRate="60", width="760", height="1000")]
public class Main extends Sprite

Или вы в рантайме изменить размер окна хотите?

Код AS3:

_objectStage.width = 1024;
_objectStage.height = 768;

пустому спрайту нельзя задать размер.

nelco 11.09.2015 00:06

я хочу, чтобы stage.width возвращало 1024, а stage.heigth возвращало 768 и как можно меньше, чтобы для этого нужно было сделать кодом... но пока ничего не получается, тот код (который с метатегом) куда надо его вставлять? если после importов ставлю - то ничего не меняется, если до объявление пакета, то пишет ошибку... :\

Добавлено через 14 минут
вроде немного разобрался... добавил рисование прямоугольника в конструктор без слова stage и в трейсе поменял stage.stageWidth на stage.width. Теперь стало возвращать 1024

Код AS3:

 
 
package zoo
{
//[SWF(backgroundColor = "#8FD9E6", frameRate = "60", width = "760", height = "1000")]; // такое изменение не работает
 
        import flash.display.Sprite;
 
        public class Main extends Sprite
        {
                //private var _objectStage:Sprite = new Sprite();
 
                public function Main()
 
                {
                        graphics.drawRect(0, 0, 1024, 768);
 
                        //_objectStage.graphics.drawRect(0, 0, 1024, 768);
 
                        //addChild(_objectStage);
 
                        trace (stage.width, stage.height);
 
                }
 
        }
 
}


caseyryan 11.09.2015 07:03

stage.width и stage.height возвращают физические размеры контейнера, основываясь на размерах и положениях все его детей.
Main - это документ класс, который лежит поверх стейдж и используется как основной контейнер для приложения. В данном случае
Код AS3:

graphics.drawRect(0, 0, 1024, 768);

Рисует в Main графику размерами 1024х768, поэтому stage.width и возвращает 1024, так как на сцене теперь лежит объект таких размеров. Если туда добавить что-то еще, выходящее за рамки 1024, то в stage.width будет совсем другое число. Так что это все хрень, и подход не верный.
Есть только два варианта менять размеры stage.
Первый уже написал udaff
А второй - указать размеры в коде встройки в вебстраницу. Но в этом случае размер будет меняться только при расположении ролика на сайте

В AIR можно задавать размеры сцены напрямую, через stage.width = и stage.height =

nelco 11.09.2015 20:18

спасибо, разобрался, помог метатег, только сначала он не работал, т.к. я его поставил перед importaми, а если после импортов ставить - то работает


Часовой пояс GMT +4, время: 10:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.