У меня есть проект с использованием easelJS, в котором я пытаюсь просто изменить цвет объекта фигуры. У меня есть couple от examples, но оба они, кажется, указывают, что мне нужно будет полностью перерисовать фигуру с вызовом graphics.beginFill()
. Это кажется полностью излишним, учитывая, что я уже сохранил свой объект формы и могу выполнять другие манипуляции на нем. Я также пытался использовать ColorFilter и ColorMatrix, но не успел сделать чистую цветопередачу. В некоторых случаях цвет существенно «перезаписывает» деталь формы.Измените цвет формы без воссоздания
У меня есть массив ShapeObject
, что я хранить createjs.Shape()
объект.
var ShapeObject = function()
{
this.name;
this.shape;
this.rotation;
this.color;
};
sObject = new ShapeObject();
myShape = new createjs.Shape();
sObject.shape = myShape;
shapes = new Array();
shapes.push(sObject);
Позже я могу получить форму из массива и применить фильтр, например,
s = shapes[i];
filter = new createjs.ColorFilter(0,0,0,1, 255,128,0,0);
s.shape.filters = [ filter ];
Используя тот же пример, я хотел бы избежать необходимости полностью воссоздать форму. Я пробовал следующее, но, когда он меняет цвет, я теряю все остальные детали формы, которая была первоначально применена.
s.shape.graphics.clear().beginFill(color);
У кого-нибудь есть идея, как просто изменить цвет, не полностью воссоздавая оригинальную форму?
EDIT
После ответа относительно .command
и createjs command blog post я создал следующее.
var theShape = new createjs.Shape();
var fillCommand = theShape.graphics.beginFill("yellow").command;
theShape.graphics.setStrokeStyle(1)
.beginStroke(createjs.Graphics.getRGB(0, 0, 0))
.drawCircle(0, 0, 20)
.moveTo(0,-20)
.lineTo(0,0)
.moveTo(0,0)
.lineTo(20,0);
fillCommand.style = "orange";
Несмотря на почти идентичны примерам я получаю ошибку Uncaught TypeError: Cannot set property 'style' of undefined
в последней строке выше.
Любой шанс, что вы используете старую версию EaselJS? Команды добавлены в 0.7.0. Вот ваш пример с использованием 0.8.2: http://jsfiddle.net/lannymcnie/5km8a4st/ – Lanny
Оказывается, я использовал 0.7.0, так что хороший звонок там. Я следил за учебником, который заставил меня добавить ссылки cdn, но не потрудился проверить текущую версию! – McArthey