Использование 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. Это всего лишь предложения, и я ничего не проверял раньше.