Использование SpriteStage в EaselJS делает маску Sprite не работающей

Я делаю анимацию со Sprites в EaselJS, и из-за проблем с производительностью я должен использовать класс SpriteStage, чтобы помочь с работой. Я также использую множество масок, чтобы спрайты были обрезаны в определенных частях.

Теперь при использовании SpriteStage все мои маски больше не применяются. Я думаю, это потому, что SpriteStage не поддерживает добавление фигур к дочерним элементам, но я подумал, что это может сработать, поскольку я на самом деле не добавляю его к дочерним элементам сцены, а просто применяю его к Sprite.

Я использовал эту скрипку из другого SO вопроса, добавив некоторый код, чтобы показать, что маски не работают под SpriteStage.

var maskRect = new createjs.Graphics().drawRect(0, 0, 16, 16);
var shape = new createjs.Shape(maskRect);

var animation = new createjs.Sprite(ss);
animation.mask = shape; // Clip is applied

Есть ли способ использовать маски под SpriteStage? Или есть ли способ получить тот же эффект?

1 ответ

Решение

SpriteStage предназначен для рендеринга на основе WebGL, который в настоящее время не поддерживает графический / векторный контент. Это означает, что EaselJS Shapes и векторные маски не поддерживаются.

Вы могли бы, вероятно, создать замаскированный контент, кэшировать его, а затем использовать .cacheCanvas как ваш SpriteSheet. Это не идеально, и было бы трудно использовать с несколькими спрайтами. Возможно, вы сможете использовать SpriteSheetBuilder для создания полезного SpriteSheet. Это всего лишь предложения, и я ничего не проверял раньше.

Другие вопросы по тегам