Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.11.2008, 18:59
Offi вне форума Посмотреть профиль Отправить личное сообщение для Offi Найти все сообщения от Offi
  № 21  
Ответить с цитированием
Offi
 
Аватар для Offi

Регистрация: Sep 2008
Сообщений: 52
Wolsh
если Вам не трудно, объясните на примере...моё восприятие, к сожалению, не достаточно полно позволяет понять как это реализуется сохранять ссылку на каждый элемент(плиту) в отдельной переменной? но ведь массив и есть подборка ссылок на плиты...и через массив удобнее, как мне кажется, навигация по этим ссылкам...на счёт mapList[0], вроде, понятно. на счёт изометрии, наконец-то, понял! спасибо за разжевывание действительно, тригонометрия никчему...

Добавлено через 2 часа 15 минут
по сути, отмена тригонометрии решила проблему с некорректным перемещением плит! Всем спасибо за участие и советы!
Wolsh, Вам отдельное спасибо! Буду так же признателен, если приведете пример с оптимизацией процесса!


Последний раз редактировалось Offi; 14.11.2008 в 21:20.
Старый 15.11.2008, 00:48
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 22  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
OK, поехали.
Ваш код:
Код AS1/AS2:
mapList[0]._x+=dx;
mapList[0]._y+=dy;
for(var i=1; i<mapList.length; i++)
{
	ddx=mapList[0]._x+mapList[i].x*cellWidth;
	ddy=mapList[0]._y+mapList[i].y*cellHeight;
	mapList[i]._x=ddx;
	mapList[i]._y=ddy;
}
Оптимальный код:
Код AS1/AS2:
// сохраняем х и у нулевого клипа в переменных
var mc0x:Number = (mapList[0]._x+=dx);
var mc0y:Number = (mapList[0]._y+=dy);
for(var i=1; i<mapList.length; i++)
{
	// сохраняем ссылку на mapList[i] в переменной
        var mc:MovieClip = mapList[i];
        // все, массив больше не дергаем
        mc._x = mc0x + mc.x*cellWidth;
	mc._y = mc0y + mc.y*cellHeight;
}
В этом кусочке из трех строк Вы можете избежать как минимум 10 лишних операций. Если учесть, что этот кусочек выполняется 30 раз в секунду - ну считайте сами))))
Всегда, когда можно и имеет смысл, храните во внутренних для функции переменных (а если можно и нужно, то во внешних "общих") прямые ссылки на объекты, не заставляйте плеер их разыскивать по всей губернии каждый раз. Для игры важна любая возможность оптимизации.
А в идеале, для такого большого проекта, надо уже учиться писать классы.
У Вас получится. Чем раньше начнете, тем лучше. Тем более что уже вышли прекрасные книги как по АС2, так и по АС3, на русском. Удачи!

Добавлено через 9 минут
А, блин, забыл - не просто 10 операций 30 раз в секунду, а еще и для каждого из (50?) клипов. 1500 операций в секунду. Как минимум.
__________________
Reality.getBounds(this);

Старый 17.11.2008, 20:04
Offi вне форума Посмотреть профиль Отправить личное сообщение для Offi Найти все сообщения от Offi
  № 23  
Ответить с цитированием
Offi
 
Аватар для Offi

Регистрация: Sep 2008
Сообщений: 52
Спасибо огромное)) Все чисто и ясно!

Старый 23.11.2008, 10:59
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 24  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Вобщем вот такой вариант у меня полчился.
Если делать по моему примеру
управление картой курсором
Вложения
Тип файла: zip map.zip (111.2 Кб, 390 просмотров)

Старый 03.12.2008, 19:07
AlexStukoff вне форума Посмотреть профиль Отправить личное сообщение для AlexStukoff Посетить домашнюю страницу AlexStukoff Найти все сообщения от AlexStukoff
  № 25  
Ответить с цитированием
AlexStukoff
 
Аватар для AlexStukoff

Регистрация: Dec 2007
Адрес: Stavropol
Сообщений: 65
Отправить сообщение для AlexStukoff с помощью ICQ
Не забывайте о том, что все координаты объектов задаются в твипсах = это 1/20 пиксела.
Изменять координату меньше чем на 0.05 бессмысленно, т.к. эта величина будет округлятся до 0.
Это на тот случай, если смещения плит гуляют примерно около такой величины за одну итерацию.
__________________
coming soon...


Последний раз редактировалось AlexStukoff; 03.12.2008 в 19:09.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
игра , изометрия , карта , перемещение , плиты

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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