![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2011
Сообщений: 22
|
Здравствуйте! Помогите пожалуйста найти ошибку, не понимаю в чем дело
![]() Пишу изометрический движок. Дело встало на выстраивании плиток. Создаю общую группу плиток(на основе Group) - world и начинаю заполнять ее в цикле 4мя одинаковыми плитками(каждая тоже на основе Group). Проблема в том, что плитки выстраиваются не ровно. Каждая первая плитка ряда теряет координату по Х... По чему - вот вопрос. То есть проблема возникает на 3ем круге цикла. В дебагере до последнего присваивания все переменные имеют нужные координаты. Приведу 3ий круг цикла: ![]() // Главное приложение. private function tileWorld():void { // Задаем объединяющий все плитки UIкомпонент и добавляем его на сцену. // Тут все хорошо. var world:Group = new Group(); world.x = stage.stageWidth / 2; world.y = 100; addElement(world); // Заполняем мир плитками. // Тут все хорошо. for(var i:int = 0; i < 2; i++) { for(var j:int = 0; j < 2; j++) { // Просто рисуем плитку размером 20 на 20 цвета 0xcccccc. // Тут все хорошо. var tile:DrawnIsoTile = new DrawnIsoTile(20, 0xcccccc); // Распологаем плитку в мире. // Тут сложнее - Класс DrawnIsoTile наследуется от класса ObjectTile // Который позволяет проводить хитрые преобразования 3D координат в координаты экрана. И имеет сеттер position. // И ТУТ возникает проблема! tile.position = new Point3D(i * 20, 0, j * 20); world.addElement(tile); } } } public Class ObjectTile extends Group { public function set position(value:Point3D):void { _position = value; // Преобразуем 3D координаты в координаты экрана. var screenPos:Point = IsoUtils.isoToScreen(_position); // на данном моменте все хорошо screenPos.x=20 screenPos.y=10 super.x = screenPos.x; super.y = screenPos.y; // После выхода из функции получается, что X плитки = 0, Y = 10. // И так у каждой первой плитки ряда - X теряем, Y все правильно. // Самое интересное если в дебагере принудительно задать screenPos.x=21 то все работает X не пропадает. } } Последний раз редактировалось ekonomizer; 25.09.2011 в 22:31. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|