Форум 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=183210)

razerw 15.08.2012 12:49

Проблема с массивом изометрии
 
Вложений: 1
Всем привет!
Друзья! Столкнулся с проблемой следующего хорактера.
Создал изометрическое поле, которое рисуется сверху-вниз, слева-направо.
Вот как она выглядит сейчас:
Вложение 28328
Так вот, я пытаюсь создать массив проходимости для данной изометрии и ничего не получается.
Подскажить каким алгоритмом можно создать массив для изометрии, что бы этот массив хранил всебе данное состояние каждого тайдла изометрии.

razerw 15.08.2012 14:37

Может быть есть у кого нибудь какие мысли как создать массив? Я в тупике.

mooncar 15.08.2012 14:45

razerw, на форуме не надо "апать тему".

-De- 15.08.2012 14:59

Как создавать массив написано в документации. Вообще-то хватит одномерного. Если нужен "двумерный", то создать массив массивов, в гугле по "as3 двумерный массив" всё находится.

razerw 15.08.2012 15:22

массив то я создал.
только когжд я нажимаю на таидл мышкой у меня совсем не те тайдлы изменяются

Krusty 15.08.2012 15:24

Цитата:

Сообщение от razerw (Сообщение 1092305)
массив то я создал.
только когжд я нажимаю на таидл мышкой у меня совсем не те тайдлы изменяются

Извините, все телепаты в отпуске. Пишите подробнее.

MINASTIS 15.08.2012 15:29

:D действительно.
Зачем нам картинка, если нужен код? Код на бочку!

razerw 15.08.2012 16:10

создана изометрия. хотя изометрией это сложно назвать.
тупо выставляются тайдлы в цикле.
Это относительно графике, а я хочу под эту карту проходимости создать массив. тоесть я щелкаю по тайдлу и он становится не зеленым а красным. Вдальнейшем этот массив будет картой проходимости.
вот мой код который создаем массив.
Код AS3:

private function clearMapMask():void
                {
 
                        // Создаем новый массив
                        _mapMask = [];
 
                        // Двигаемся по высоте карты
                        for (var ay:int = 0; ay < 1600; ay++)
                        {
                                // Добавляем новую строку в массив
                                _mapMask[ay] = [];
                                // Двигаемся по ширине карты
                                for (var ax:int = 0; ax < 1600; ax++)
                                {
                                        // Задаем ячеке свободное состояние
                                        _mapMask[ay][ax] = STATE_CELL_FREE;
 
 
                                }
                        }
                  }

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

Aquahawk 15.08.2012 16:32

2560000 тайлов? удачи.

razerw 15.08.2012 16:33

Я и прошу помощи как корректно построить массив карты проходимости для изометрии

Bgg 15.08.2012 16:40

Цитата:

Сообщение от razerw (Сообщение 1092319)
Я и прошу помощи как корректно построить массив карты проходимости для изометрии

Воспользуйтесь сторонней библиотекой: http://code.google.com/p/as3isolib/

razerw 15.08.2012 16:48

мне эта библиотека не нравится.
Неужели ни кто не создавал макссив под изометрию?

-De- 15.08.2012 17:01

Ну вон сам же сделал массив. Но ведь проблема почему-то не та совсем оказалась.
Зачем про массив спрашиваешь, как поможет массив?
Ну можно битмапу сделать, памяти поменьше жрать будет, но тыки оно от этого определять не научится.

razerw 15.08.2012 17:17

Вложений: 3
битмапу я уже сделал.
а не многоли у меня в массиве записей? 250000000 потом когда буду считать карту проходимости допустим для 5 объектов, аппонент запипикается ждать с каждого прохода по массиву по 15 секунд.
я нажимаю на координаты 0, 0 потом 0,1 потом 0,2 потом 0,3 потом 0,4. Вот как отображаются тайдлы на изометрии.
Вложение 28331
теперь нажимаю на координаты 1,1 пото 1,2 потом 1,3 потом 1,4 вона как отображается
Вложение 28330

MINASTIS 15.08.2012 18:31

Я, если честно, не понимаю сути проблемы.

razerw 15.08.2012 20:10

Как сделать так что бы при на жатии на тайдл именно он менял сое состояние а не другой.
И мне кажется уменя слишком большой массив

Koopa 15.08.2012 20:22

Класс в руки.
Экземпляры класса ведут себя одинаково, если их не дополнить.

MINASTIS 15.08.2012 20:58

Ну это зависит от косяков в коде, что двигается другой. Как так? В каком смысле двигается другой? Если на 1 больше чем надо(например не 1-й а второй при нажатии), то косяк в присваивании значений, какие-бы они ни были (я в построении изометрических карт не разбираюсь).
Koopa правильно говорит, сделать класс "тайл карты" к примеру и создать этих экземпларов на всю карту. Естественно, при нажатии на класс он же и изменится, тут косяков не будет.

razerw 15.08.2012 21:30

у меня массив сума сойдет ) когда я в нем буду искать карту проходимости)

MINASTIS 15.08.2012 21:58

Ну массив нужен, чтобы сохранять ссылки на каждый элемент.
А вот в классы добавлять dispatchEvent к примеру, который и пишет "steppedOnMe".
К каждому элементу привязать при создании addEventListener, прослушивающий "steppedOnMe" и вытаскивающий из currentTarget к примеру созданную паблик переменную "isObstacle"(является ли препятствием).
Это в тему если делать для игры, что можно пройти а что нет.

Не знаю насчет производительности, но теперь никакого пересчета массива при нажатии. Лишь одно событие от одного тайла-класса.

Если я все так понял.


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

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