Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Декартова система координат с начальной точкой в центре stage (http://www.flasher.ru/forum/showthread.php?t=183066)

wisconsin 10.08.2012 17:51

Декартова система координат с начальной точкой в центре stage
 
декартова система координат с начальной точкой в центре stage

собственно как реализовать

samana 10.08.2012 19:29

Прибавляйте к вашим координатам половину размера сцены по высоте и ширине.
Либо делайте в отдельном спрайте, а сам спрайт поставьте в центр сцены.

wisconsin 10.08.2012 23:18

хотелось бы узнать как двигать stage. никак не найду нужного свойства... спасибо

Wolsh 10.08.2012 23:32

1. Стейдж не может двигаться, это пространство окна плеера.
2. Стейдж тут вообще не при чем. Есть экземпляр ДокументКласса, и все объекты должны добавляться в его список отображения, а не в список стейджа. А вот документКласс-то (рут) можно смело сдвинуть на середину.

wisconsin 11.08.2012 01:06

Цитата:

Сообщение от Wolsh (Сообщение 1091785)
Есть экземпляр ДокументКласса, и все объекты должны добавляться в его список отображения, а не в список стейджа. А вот документКласс-то (рут) можно смело сдвинуть на середину.

Код AS3:

 
package {
        import flash.display.MovieClip;
 
        public class MainClass extends MovieClip
        {
                //Как теперь двигать?
        }
}


Sintesis 11.08.2012 01:24

Если двигать MainClass то
Код AS3:

 
package {
        import flash.display.MovieClip;
 
        public class MainClass extends MovieClip
        {
                this.x = 100;
                this.y = 100;
        }
}

Если самый низ как Wolsh сказал то: stage.root.x = 100; stage.root.y = 100

Wolsh 11.08.2012 01:37

Да. Ну, по-хорошему конечно надо подписаться на ADDED_TO_STAGE, в хендлере установить настройки скейла (stage.scaleMode = StageScaleMode.NO_SCALE) и привязки (stage.align = StageAlign.TOP_LEFT), и подписаться на Event.RESIZE от полученного стейджа (и не забыть вызвать хендлер ресайза вручную), а в хендлере ресайза уже устанавливать положение в зависимости от размеров сцены, то есть stage.stageWidth/2 и stage.stageHeight/2, а не хардкодить "100"))

Sintesis 11.08.2012 01:53

Ну это обязательно. Лень мне было целую точку входа писать...

caseyryan 11.08.2012 09:45

Цитата:

Да. Ну, по-хорошему конечно надо подписаться на ADDED_TO_STAGE
Зачем это делать для документ класса? В нем stage уже в конструкторе доступна. По-моему это просто лишние телодвижения и лишнее нагромождение в коде. Я не сталкивался ни с однм случаем, когда обращение к стейдж в конструкторе документ класса приводило бы к обращению к несуществующему объекту

wisconsin, о декартовой системе задумываются многие начинающие программисты. Но, это лишнее (если конечно не стоит задачи реализовать какой-то график функции, например). Стоит привыкнуть к существующей системе, ничего плохого в ней нет

Wadimir 11.08.2012 12:18

Цитата:

Сообщение от caseyryan (Сообщение 1091808)
В нем stage уже в конструкторе доступна.

А если делать проект в FlashBuilder-e ???

Silicium 11.08.2012 12:39

Цитата:

о декартовой системе задумываются многие начинающие программисты. Но, это лишнее (если конечно не стоит задачи реализовать какой-то график функции, например). Стоит привыкнуть к существующей системе, ничего плохого в ней нет
Не совсем по теме, но "существующая система" тоже декартова, только левосторонняя.

Добавлено через 1 минуту
Цитата:

А если делать проект в FlashBuilder-e ???
Если чистый AS3 - то без разницы. В mxml делай так, как Wolsh описал.

Wolsh 11.08.2012 14:24

Цитата:

Зачем это делать для документ класса? В нем stage уже в конструкторе доступна. По-моему это просто лишние телодвижения и лишнее нагромождение в коде. Я не сталкивался ни с однм случаем, когда обращение к стейдж в конструкторе документ класса приводило бы к обращению к несуществующему объекту
Документ-класс 1 компилируем в Loaded.swf
Код AS3:

package  
{
        import flash.display.Sprite;
        public class LoadedMain extends Sprite
        {
                public function LoadedMain()
                {
                        trace(this.stage);
                }
        }
}

Документ-класс 2 :
Код AS3:

package 
{
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
 
        public class Main extends Sprite
        {
                public function Main():void
                {
                        var loader:Loader = new Loader();
                        loader.load(new URLRequest("Loaded.swf"));
                }
        }
}


incvizitor 13.08.2012 14:32

Цитата:

Я не сталкивался ни с однм случаем, когда обращение к стейдж в конструкторе документ класса приводило бы к обращению к несуществующему объекту
наверное никогда не подгружали внешние свф файлы.


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

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