Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.10.2011, 11:28
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

Canvas html5
Доброго времени суток.
Изучаю HTML5 по последней спецификации. Дошел до canvas. Есть несколько вопрпосов, ответы на которые не могу найти в интернете. А спецификацю до конца не понимаю.
1 вопрос. нарисовал два кружочка. применяю fill() как браузер снает что я хочу закрасить?. Думал применяется к отдельным path-ам да в примерах вообще без создания областей обходятся. Зачем нужны path-ы и closePath() только чтобы применять замыкание контура?
2 вопрос. если фигуру нарисовал, затем нарисовал другую фигуру. можно ли вернутся к первой и, например , закрасить ее?
Save и restore относятся лишь к матрице трансформации.
3. Про анимацию. неужели необходимо при каждой итерации перерисовывать ВЕСЬ холст применив единственный созданный для этого метод (clearRect).В LibCanvas? например создается отдельный слой (как? неужели еще один элемент canvas, накладываемый на первый ) думаю что нет.
Помогите разобраться!
Ответить с цитированием
  #2 (permalink)  
Старый 27.10.2011, 11:36
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

1. читай ещё раз спецификацию. явно написано как закрашивать и как оставлять только контур.path-ещё раз читай спецификацию.-метод рисования относительно пред точки-как и везде
2 никак.
3. закрашивается всё одним цветом-прозрачным белым
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2011, 14:46
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

Т.е. полная перерисовка холста?
А если холст большой. сколько по времени займет?
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2011, 14:47
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

я хотел сказать - то же очень не удобно перерисовывать ВСЕ!! каждый кадр
Ответить с цитированием
  #5 (permalink)  
Старый 09.11.2011, 16:43
Интересующийся
Отправить личное сообщение для Shock Посмотреть профиль Найти все сообщения от Shock
 
Регистрация: 16.01.2009
Сообщений: 20

На самом деле есть дополнительные хитрости. Смотрите "Пятнашки на LibCanvas". Перерисовка пятнашек, которые остались на месте не происходит и слои не используются. Есть топик на Хабре, где описывается основная идея.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2011, 10:17
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Shock
На самом деле есть дополнительные хитрости. Смотрите "Пятнашки на LibCanvas". Перерисовка пятнашек, которые остались на месте не происходит и слои не используются. Есть топик на Хабре, где описывается основная идея.
А хитрость в чём?
Способ есть гораздо проще-двигать фишку и позади её стирать/рисовать ещё одну пиксельную линию(при перемещении на 1 пиксел) равную ширине фишки.
И стирание, описанное у вас в этом случае лишнее,достаточно просто рисования.-уже операций жрущих кучу ресурсов в 2 раза меньше.
И вся ваша теория по этому поводу,расписанная на хабре на пару страниц, становится бесполезной

Последний раз редактировалось dmitriymar, 11.11.2011 в 10:47.
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2011, 10:54
Интересующийся
Отправить личное сообщение для Shock Посмотреть профиль Найти все сообщения от Shock
 
Регистрация: 16.01.2009
Сообщений: 20

Ну вы прям гений. Рассматриваете частный случай, когда на Хабре на примере частного случая описан общий. Основная идея - стираем старое место, рисуем новое. С пятнашкой нестандартной формы (например, круглой) ваша идея с одним пикселем вообще не подходит.
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2011, 11:07
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Shock
Ну вы прям гений. Рассматриваете частный случай, когда на Хабре на примере частного случая описан общий. Основная идея - стираем старое место, рисуем новое. С пятнашкой нестандартной формы (например, круглой) ваша идея с одним пикселем вообще не подходит.
Боюсь что пройдёт-поскольку круглая фишка с соседней условно соприкасается в одной точке и сохранённое изображение всёравно будет прямоугольник, при однотонном фоне и движении вдоль осей предметов ,без пересечения их- это как раз общий случай.
Да и на счёт того что описываете общий не согласен.Нет и близко общего в этом частном случае.
С тем что, реализацию общего неправильную описываете согласен на все 100.

Последний раз редактировалось dmitriymar, 11.11.2011 в 11:18.
Ответить с цитированием
  #9 (permalink)  
Старый 15.01.2012, 22:25
Интересующийся
Отправить личное сообщение для Shock Посмотреть профиль Найти все сообщения от Shock
 
Регистрация: 16.01.2009
Сообщений: 20

Необходимо стирать минимум половину круга.
Если объект полупрозрачный, то стирать обязательно весь.
Ответить с цитированием
  #10 (permalink)  
Старый 15.01.2012, 23:41
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от Shock
Необходимо стирать минимум половину круга.
Если объект полупрозрачный, то стирать обязательно весь.
Расстрою, дело в том что круг как и прямоугольник вставляться прямоугольной областью,если к этому правильно подойти
По поводу полупрозрачности,прозрачн сти есть параметры наложения,определяющие как накладываемое будет затирать предыдущее -и если вы о них не знаете,не знаете как использовать-мне жаль вас.Помимо этого есть ещё варианты.

Дело не в том что стирать и тому подобное-яркий пример пятнашки изменение на общий случай и на 40-50% быстрее,а если ещё по уму всё делать,то...
Не считаю LibCanvas чем то жутко оригинальным и т.д. тем более -использовать одну канву,а не слоённую канву считаю глупостью как минимум. Да и для движущихся элементов никто не отменял комбинирование с контейнерами и CSS,картами,SVG...
Тем более непонятен ажиотаж связанный с созданием 2х мерных игр и подобного на канве. SVG гораздо больше для этих целей подходит,да есть свои нюансы,но в конечном итоге инструментарий больше,чего стоит возможность создавать для объектов обработчики,чего не скажешь о канве.
Опять,не говорю что SVG всегда лучше чем канва,всё зависит от задачи.
Я считаю,что вы с пропагандой своей библиотеки,мало того,что она очень не функциональна(выше описано почему,CSS и т.д),так вы ещё и не в ту сторону всех направляете.
Именно SVG создавалась для создания игр и подобного,а всё ваше творчество могу сравнить только с попыткой пить чай вилкой.

Последний раз редактировалось dmitriymar, 16.01.2012 в 01:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск Canvas в IE9! Severtain Общие вопросы Javascript 7 11.04.2012 12:36
html5 Canvas как кэш для изображений JAre Элементы интерфейса 6 20.07.2011 03:22
canvas: working with canvas Severtain Общие вопросы Javascript 0 01.07.2011 17:29
Когда тэги типа <font> исчезнут? Alex455 (X)HTML/CSS 10 14.06.2011 20:14
Добавить на canvas еще один елемент greengarlic Общие вопросы Javascript 5 22.09.2010 10:16