Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Общие вопросы о Flash (не затрагивающие ActionScript)

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.02.2009, 16:07
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 1  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
По умолчанию JSFL войти в сгруппированный шейп (shape)

Дошел до уровня элемент_шейп.isGroup

Далее надо войти в группу (или подгруппы) до конечного шейпа и выделить его (применить в итоге optimizeCurves).

Не могу найти, как получить массив группы (или как войти в группу)???

Старый 12.02.2009, 19:06
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
а если сделать beginEdit, а затем unGroup? потом отредактировать и сгруппировать обратно
__________________
4am is time to rock

Старый 12.02.2009, 19:19
chingachgoog вне форума Посмотреть профиль Найти все сообщения от chingachgoog
  № 3  
Ответить с цитированием
chingachgoog
Banned
[+4 01.02.09]
[+1 01.02.09]
 
Аватар для chingachgoog

блогер
Регистрация: Nov 2006
Адрес: Moscow
Сообщений: 2,145
Записей в блоге: 7
Разгруппированные шейпы ведут себя непредсказуемо, особенно когда их много - обратно может сгруппироваться совсем не то.

В общем нашел, что в группу можно войти enterEditMode().
Но при выделении selectAll() в массиве selection всего один объект (хотя там могут быть несколько шейпов, в т.ч. тоже сгруппированные).

Плюс начинаются глюки со встроенными методами JSFL-разработчиков: то enterEditMode(), то optimizeCurves(), начинают непредсказуемо писать ошибки - якобы нет выделения! (и это после selectAll()!) Непредсказуемость в том, что они при одном запуске возникают, при другом - нет.

add:

В общем основная ошибка из-за которой скрипт не работает - нестабильность метода
Цитата:
fl.getDocumentDOM().selection=[мой_элемент]
Собственно он то выделяет мой_элемент (видно по параметру selection.length), то напрочь отказывается это делать (часто помогает перезапуск флеш-редактора, но не всегда).
А выделение нужного элемента (мой_элемент) - необходимое условие методов 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:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.