![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Дошел до уровня элемент_шейп.isGroup
Далее надо войти в группу (или подгруппы) до конечного шейпа и выделить его (применить в итоге optimizeCurves). Не могу найти, как получить массив группы (или как войти в группу)??? |
|
|||||
|
ветеран форума
|
а если сделать beginEdit, а затем unGroup? потом отредактировать и сгруппировать обратно
__________________
4am is time to rock |
|
|||||
|
Banned
[+4 01.02.09]
[+1 01.02.09] |
Разгруппированные шейпы ведут себя непредсказуемо, особенно когда их много - обратно может сгруппироваться совсем не то.
В общем нашел, что в группу можно войти enterEditMode(). Но при выделении selectAll() в массиве selection всего один объект (хотя там могут быть несколько шейпов, в т.ч. тоже сгруппированные). Плюс начинаются глюки со встроенными методами JSFL-разработчиков: то enterEditMode(), то optimizeCurves(), начинают непредсказуемо писать ошибки - якобы нет выделения! (и это после selectAll()!) Непредсказуемость в том, что они при одном запуске возникают, при другом - нет. add: В общем основная ошибка из-за которой скрипт не работает - нестабильность метода Цитата:
А выделение нужного элемента (мой_элемент) - необходимое условие методов enterEditMode и optimizeCurves. Может быть еще как-то можно выделить элемент для этих методов? Не понимаю... Array.prototype.clone=function(){
var arr=[]
for (var i in this){
arr[i]=this[i]
}
return arr
}
fl.outputPanel.clear ();
myFile=fl.getDocumentDOM()
myTimeline=myFile.getTimeline()
for (var i=0; i<myTimeline.layers.length; i++){ // перебираем слои
var curLayer=myTimeline.layers[i] // текущий слой
for (var j=0; j<curLayer.frames.length; j++){ // перебираем кадры
curFrame=curLayer.frames[j] // текущий кадр
var arrElements = curFrame.elements.clone(); // массив с элементами на текущем кадре
for (var c = 0; c < arrElements.length; c++) {
var curElement=arrElements[c]
chekElements(curElement)
}
}
}
function chekElements(curElement){
myFile.selectNone()
fl.trace("проверка элемента "+curElement)
if (curElement.elementType == "shape"){
if (curElement.isGroup){
inGroup(curElement)
return
}
//myFile.selection=[curElement]
myFile.selectAll()
fl.trace("Оптимизация простого элемента "+myFile.selection)
if (!myFile.selection.length){
fl.trace("произошел сбой выделения элемента")
return
}
myFile.optimizeCurves(100, true);
}
}
function inGroup(curElement){
fl.trace("выделена группа")
myFile.selection=[curElement]
if (!myFile.selection.length){
fl.trace("произошел сбой выделения группы")
return
}
myFile.enterEditMode(); // входим в группу
myFile.selectAll() // выделяем все элементы
var arrSelection=myFile.selection.clone()
fl.trace("В группе выделенных элементов: "+arrSelection.length)
for (var i=0; i<arrSelection.length; i++){
chekElements(arrSelection[i])
}
myFile.exitEditMode() // выходим из группы
}
Последний раз редактировалось chingachgoog; 13.02.2009 в 14:35. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:18. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|