JSFL: Удалить все удары, которые соответствуют определенному цвету?
Вопрос
Я ищу функцию JSFL, которая может выбрать все элементы на раме и удалять все удары, которые соответствуют определенному цвету, такими как # 0000FF
По сути, я делаю много заметок с карандашом, используя красные удары карандашом. Но когда я сделал, я просто хочу сказать Flash, чтобы удалить все мои красные стопки с экрана и оставь все остальное. Любые решения для этого?
Решение
Хороший вопрос !
Глядя на объект документа в документах JSFL, я вижу, единственный способ получить инсульт - через Document.getCustomStroke (), который раздражает. В идеале объект формы будет хранить инсульт и заполнить информацию, но это не :(
Я пытался контролировать выбор, используя массивы:
var doc = fl.getDocumentDOM();
doc.selectAll();
var s = new Array().concat(doc.selection);
var sl = s.length;
doc.selectNone();
for(var i = 0; i < sl ; i++){
doc.selection = s[i];
stroke = doc.getCustomStroke('selection')
fl.trace(stroke.color)
}
Это не сработало.
Затем я пытался выбрать каждый объект, используя
doc.mouseClick({x:s[i].x, y:s[i].y}, false, false);
Но это не очень полезно, поскольку заметки могут принимать любую форму, поэтому щелчок в верхнем левом углу примечания может быть пропущенным выбором. Зацикливаться через каждый пиксель, чтобы получить выбор, не будет работать.
Краткий ответ - это не потому, что единственный способ получить цвет инсульта проникает через выбор документа.
Есть некоторые обходные пути, хотя:
В IDE используйте найдите и замените, выберите цвет вместо текста и замените цвет ноты с чем-то прозрачным. К сожалению, это не так много решения. Это просто будет скрыть заметки, а не удалять их.
(источник: Sonic.net.net.)Чтобы легко получить заметки от JSFL: поместите все заметки в текущей временной шкале в одном слое и дайте ему наводящее имя, скажем «_ноты», то просто удалите этот слой.
например
var doc = fl.getDocumentDOM();
if(!doc) alert('Pardon me! There is no document open to work with.');
fl.trace(deleteLayerByName('_notes'))
/*Returns true if the layer was found and deleted, otherwise returns false*/
function deleteLayerByName(name){
var timeline = doc.getTimeline();
var frame = timeline.currentFrame;
var layers = timeline.layers;
var layersNum = layers.length;
for(var i = 0 ; i < layersNum; i++){
if(layers[i].name == name){
timeline.deleteLayer(i)
return true;
}
}
return false;
}
Надеюсь, кто-то может обеспечить хороший взлом для выбора объектов по цвету в JSFL. Есть довольно много вещей, которые вы можете сделать в IDE, но не могу сделать их от jsfl :(
Емкость