Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужен ваш помощь и совет по Canvas

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Анимация по заданому пути
eko24
Отправлено: 29 Сентября, 2013 - 01:56:21
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Всем доброго времени суток.
Есть задача:
На карте нужно последовательно (не одновременно) сгенерировать несколько квадратов (2-4), сделать анимацию их движения по заданому пути и по завершению пути удалить этот квадрат.
Я уже как 3й день грызу всеязычные туториалы по канвасу, но почему то не могу додуматься как это реализировать. Мне понятно как вставить само изображение, понятно как нарисовать квадрат, а вот анимации и работа с нескольками объектами я догнать не могу.
Я хотел бы понять:
-как работать с нескольками элементами
-как создавать анимацию движения для каждого элемента
Очень надеюсь на вашу помощь по этому вопросу, зарание спасибо.
З.Ы.
карту с координатами прикрепил
Прикреплено изображение (Нажмите для увеличения)
Безымянный.png
 
 Top
DelphinPRO
Отправлено: 29 Сентября, 2013 - 20:00:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Анимация - тупо перерисовывать холст с частотой анимации, изменяя координаты. Сложные объекты отрисовывать в буферном холсте и при необходимости копировать на основной (увеличится FPS)
C несколькими элементами работать по очереди.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
eko24
Отправлено: 29 Сентября, 2013 - 23:35:03
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




это все на словах.
я даже примерно не понимаю как это прописать в коде
 
 Top
DelphinPRO
Отправлено: 29 Сентября, 2013 - 23:53:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




eko24 пишет:
понятно как нарисовать квадрат,

Если вам это понятно, что мешает нарисовать квадрат в точке (x,y), Через, допустим, 100мс стереть, и нарисовать квадрат в точке (x+1, y+1). Затем повторять эти действия, пока квадрат не достигнет цели. Это и есть покадровая анимация.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
eko24
Отправлено: 30 Сентября, 2013 - 18:57:44
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




кажется , вы открыли мне глаза.
то есть, если я правильно понял, то блок стирания должен присутствовать обязательно.
и если вас это нездатруднит - обьясните как работать с несколькими квадратами, хотя бы на пальцах.
я все еще не понимаю как генерировать несколько уникальных/независимых квадратов
 
 Top
IllusionMH
Отправлено: 30 Сентября, 2013 - 19:22:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




eko24, перебирая квадраты(массив объектов с значениями или как оно реализовано у вас) в цикле: по старым координатами нарисовать квадрат фонового цвета, рассчитать новые координаты, нарисовать квадраты снова.

(Отредактировано автором: 30 Сентября, 2013 - 19:23:10)

 
 Top
eko24
Отправлено: 30 Сентября, 2013 - 19:59:20
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




IllusionMH пишет:
или как оно реализовано у вас

в том то и дело, что пока что оно никак не реализировано.
А вообще вы подкинули замечательный алгоритм.
И у меня появился еще один вопрос:
Я уже прекрасно понимаю, что нет ничего сложно перемещать обьект паралельно осям координат используя инкременты или декременты
Но вот как рационально сделать так, что бы квадрат, допустим, двигался с точки (0,0) в точку (200,150) ?
Очень жду Ваших ценных советов
 
 Top
IllusionMH
Отправлено: 01 Октября, 2013 - 11:47:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




eko24, нужно записать лагранжиан для данного квадрата. Радость
Все зависит о того как он должен двигаться.
Если по прямой, то никаких проблем: задаем время, считаем скорость по х и у, на каждой итерации прибавляем к координате скорость(смещение за единицу времени) Улыбка
Если скорость должна менятся - добавляем ускорения.
Если нужно двигаться вокруг препятствий, то тут уже нужно включать логику и придумывать алгоритмы движения, разбивая сложный маневр на серию простых.
Все(кроме лагранжиана) как в школьной программе за 8-10 класс Улыбка

(Отредактировано автором: 01 Октября, 2013 - 11:53:01)

 
 Top
DelphinPRO
Отправлено: 01 Октября, 2013 - 17:08:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




IllusionMH пишет:
по старым координатами нарисовать квадрат фонового цвета
Это если фон однородный. Если фоном стоит картинка, или еще что-то сложное, можно например копировать на холст кусочек фона по заданным координатам. Но это все уже оптимизации, если простая перерисовка будет давать низкий FPS.
eko24 пишет:
блок стирания должен присутствовать обязательно.

Чтобы стереть canvas достаточно присвоить свойству width или height значение. Можно даже то же самое, что и было. Т.е. для холста шириной 200px для стирания достаточно написать canvas.width = 200; (canvas - это ваш объект холста).

(Отредактировано автором: 01 Октября, 2013 - 17:09:00)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
IllusionMH
Отправлено: 01 Октября, 2013 - 17:23:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




DelphinPRO, я писал отталкиваясь от рисунка выше. Да и начинать нужно с простого, а когда уже придет понимание дела(а судя по вопросу о движении не вдоль осей, его нет) тогда картинки, оптимизации и прочее.
 
 Top
eko24
Отправлено: 01 Октября, 2013 - 23:56:32
Post Id



Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




IllusionMH пишет:
Все зависит о того как он должен двигаться.

Там просто набор точек на карте.
С движением по пути разобрался, после того как немного порыл темы на стаковерфлоу нашел уйму разнообразных плагинов решения этой проблемы (например вот этот http://ijin[dot]net/crSpline/demo[dot]html ).
У меня еще такое чуство, что полюбому появятся новые вопросы, и буду очень рад если вы снова сможете мне помочь.
Плюсами вас уже засыпал :3
(Добавление)
И вообще, если дружите с английским, то для начинающих в канвасе рекомендую эту книгу:
http://www[dot]amazon[dot]com/Foundation[dot][dot][dot]nt/dp/1430232919
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB