Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Canvas события (https://javascript.ru/forum/misc/19266-canvas-sobytiya.html)

dmitriymar 30.07.2011 19:13

Цитата:

Сообщение от float
а если картинка?

если цвет точек определять то без разницы. допустим зелёная окружность картинка.
определить клик. по цвету точек определить был ли клик внутри круга. если был то точки справа и слева будут зелёными(не рассматриваю сейчас вариант что он не весь в канве -определить смещение точек по вертикали относительно найденной чтоб определить внутри или снаружи был клик) -поставить индикатор. при отпуске мыши его сбрасывать
если движение мышью были при зажатой клавише-то перерисовать круг по новым координатам :)
ну а если всю картинку двигать то вообще не вопрос)

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

nyols 30.07.2011 20:47

Ну я не знаю как там с пикселями, для меня это еще сложно)))
Но вот решил для каждого объекта сохранять координаты, и при клике, по координатам проверять совпадение с каким либо созданным объектом, и если у него имеется обработчик клика, то вызывать. (ну и не только с кликом, и с другим событиями тоже). Так думаю все получится))

Минус только в том что так будет работать, только для прямоугольных объектов и окружностей. А вот с кривыми окружностями (если можно так выразится) это не получится (ну пока еще не знаю как возможно будет определять принадлежность точки для кривой окружности)

nyols 30.07.2011 20:53

У меня еще такой глупый вопрос :)
Зачем сделано что бы при получение контекста, явно указывать "2d"
Разве в будущем что ли планируется возможность создания 3D изображений на канвасе, и тогда будем указывать "3d" ? :) :)

float 30.07.2011 20:57

не планируется. это есть уже.

dmitriymar 30.07.2011 21:00

Цитата:

Сообщение от nyols
Но вот решил для каждого объекта сохранять координаты, и при клике, по координатам проверять совпадение с каким либо созданным объектом, и если у него имеется обработчик клика, то вызывать. (ну и не только с кликом, и с другим событиями тоже). Так думаю все получится))

ну дак а смысл в объекте-если эрию можно по ним строить и кидать на неё обработчик? отпадает проверка совпадения

nyols 30.07.2011 21:32

Цитата:

Сообщение от dmitriymar
ну дак а смысл в объекте-если эрию можно по ним строить и кидать на неё обработчик? отпадает проверка совпадения

Хммм, тоже вариант, попробую так)

Еще такой вопросик, если мне надо изменить цвет (размеры и т.п.) одного (или нескольких элементов), то для этого мне надо очистить канвас (я меняю размеры) и заново рисую. А если будет много элементов, и ради одного или двух, рисовать заново весь канвас, это же может повлиять сильно на скорость работы. Как вариант только если для статических элементов делать один канвас, а динамические кидать в другой канвас и только его рисовать постоянно ?

nyols 30.07.2011 21:42

Цитата:

Сообщение от float
не планируется. это есть уже.

Афигеть, так если научится, то можно будет делать крутые браузерские игры, аналоги настольных игр (моя мечта) :)

Пока что самую впечатлительную которую я видел - это был quake сделанный в гугле (и то только видео, жаль что самому не удалось поиграть) :)

Микрософт от зависти обосрется что в его браузерах игры не будут идти :D

DreamTheater 30.07.2011 22:36

http://javascript.ru/forum/project/1...rejjmvork.html

dmitriymar 30.07.2011 22:50

Цитата:

Сообщение от nyols
Как вариант только если для статических элементов делать один канвас, а динамические кидать в другой канвас и только его рисовать постоянно ?

если статические у тебя не используются-то подложи изображение под канву-просто контейнер с изображением внутри либо с изображением беграундом

и посмотри на функции канвы getImageData и putImageData чтоб цвет менять и прочее одного элемента а не всю перерисовывать

dmitriymar 30.07.2011 22:53

Цитата:

Сообщение от nyols
Микрософт от зависти обосрется что в его браузерах игры не будут идти

почему не будут?) ие9 полная поддержка канвы а для более старых библиотеки подключаются


Часовой пояс GMT +3, время: 23:11.