FLash CS4. Select Similar (Выделить подобное) by JSFL

Задача: на сцене присутствует большое количество объектов. Нам нужно выделить все объекты определенного типа. Если выделять их по одному, в лучшем случае просто начнет нервно дергаться глаз.

В 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;
	}

}

Все элементарно. Задача решена.

2010.05.18