— Pixels Commander

[ In English, На русском ]

Динамические маски с помощью CSS

Это — попытка добавить динамические растровые маски во FlashJS.

Решение не простое и работает только в webkit браузерах, но насколько знаю это первая на сегодня реализация динамических масок через CSS.

Для пользователей FlashJS работа с динамческими масками выглядит очень просто:

objectA.mask = objectB;
objectB.graphics.drawCircle(x,y,r);

Но как это реализовано внутри?

Прием основан на CSS свойстве -webkit-image-mask. Не очень известный факт — значением свойства может быть не только URL файла, но и строка в формате data:URL, а это позволяет передавать данные из JS в CSS.

В этой демонстрации вы рисуете круги на canvas двигая указатель мыши по голове персонажа. Canvas сохраянется в data:URL строку и присваиваются CSS параметру -webkit-image-mask в случае если в маске произошли изменения.

Надеюсь это свойство получит более простой способ связи с JS кодом, на данный момент на сохранение canvas в data:URL тратится огромное количество времени. Ну и ждем аналоги в других браузерах…