Задача: на сцене присутствует большое количество объектов. Нам нужно выделить все объекты определенного типа. Если выделять их по одному, в лучшем случае просто начнет нервно дергаться глаз.
В 3Ds Max есть замечательная команда «Select Similar» (Выделить подобные), но в Flash подобной команды нет. Для решения этой задачи я решил воспользоваться JSFL (язык для написания макросов, сценариев под Flash IDE).
Итак, качаем Api: JSFL API или смотрим онлайн.
Создаем файл «Select Similar.jsfl»
Чтобы было вообще круто, помещаем его в «C:\Documents and Settings\User\Local Settings\Application Data\Adobe\Flash CS4\en\Configuration\Commands\Select similar.jsfl»
Перегружаем/Загружаем Flash и теперь в меню «Commands» появилась команда «Select Similar»
Теперь сам скрипт:
//Текущий документ
doc = fl.getDocumentDOM();
//Открыт ли какой-нибудь документ вообще?
if(doc != null)
{
// Проверяем, выделен ли хоть один объект
if(doc.selection.length){
// Запоминаем имя класса выделенного объекта.
var targetClassName = doc.selection[0].libraryItem.name;
/*
может можно и по-другому получить список объектов сцены, но я беглым
взглядом не нашел другого способа получения всех объектов документа
*/
//Выделяем все объекты на сцене
doc.selectAll();
//Получаем список объектов
childList = doc.selection;
//Проходимся по всем объектам сцены
for(n = 0; n < childList.length; n++)
//Если объект вообще имеет класс в библиотеке
if(childList[n].libraryItem)
//Если объект имеет название класса отличное от искомого - снимаем выделение
if(childList[n].libraryItem.name!=targetClassName)
childList[n].selected = false;
}
}
Все элементарно. Задача решена.