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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.10.2007, 20:47
ZXSpectrum вне форума Посмотреть профиль Отправить личное сообщение для ZXSpectrum Найти все сообщения от ZXSpectrum
  № 1  
Ответить с цитированием
ZXSpectrum
 
Аватар для ZXSpectrum

Регистрация: Oct 2007
Сообщений: 16
По умолчанию JSFL и setCustomFill

Прошу совета у людей часто использующих jsfl. Возникла вот такая проблема.

Мне нужна пакетная (сразу несколько файлов) обработка fla файлов. В них добавляется окружность и заливается выглядит это так:

Код:
doc.getTimeline().addNewLayer("shadow", "normal", false);
doc.addNewOval({left:0, top:0, right:object_width, bottom:object_height}, false, true);

doc.selectAll();
var shadow_fill = getShadowFill(doc);
doc.setCustomFill(shadow_fill);
getShadowFill выглядит так:

Код:
function getShadowFill(doc) {
	var fill = doc.getCustomFill();
	fill.color = "#000000";
	fill.style = "radialGradient";
	fill.posArray = [0, 220];
	fill.colorArray = ["#0000004d","#00000000"];
	fill.overflow = "extend";
	fill.linearRGB = true;
	fill.focalPoint = 0;
	var matrix = doc.selection[0].matrix;
	matrix.a = Math.random()*0.1;
	matrix.b = 0;
	matrix.c = 0;
	matrix.d = Math.random()*0.1;
	matrix.tx = 0;
	matrix.ty = 0;
	
	return fill;
}
после прохода по массиву открытых документов (fl.documents) окружность с градиентом есть только в первом документе во всех остальных у круга solid заливка серого цвета. Если цвет после обработки первого документа сменить, то у окружности будет цвет на который сменили.

Если setCustomFill сделать до добавления окружности, Flash падает.

После этого я сделал обработку через setInterval(), но ситуация не изменилась.

Если кто знает как можно это побороть, буду крайне благодарен.

Старый 16.10.2007, 14:39
ZXSpectrum вне форума Посмотреть профиль Отправить личное сообщение для ZXSpectrum Найти все сообщения от ZXSpectrum
  № 2  
Ответить с цитированием
ZXSpectrum
 
Аватар для ZXSpectrum

Регистрация: Oct 2007
Сообщений: 16
Эх.. Спасибо ответившим.

Нашел решение сам. Для того что бы такой ситуации не возникало, надо делать окно файла, над которым вы работаете, активным.

То есть, правильный проход будет таким:
Код:
var docs = fl.documents;

for (var i = 0; i < docs.length; i++) {
   var doc = docs[i];
   fl.setActiveWindow(doc);
   
   doc.getTimeline().addNewLayer("shadow", "normal", false);
   doc.addNewOval({left:0, top:0, right:100, bottom:100}, false, true);

   doc.selectAll();
   var shadow_fill = getShadowFill(doc);
   doc.setCustomFill(shadow_fill);
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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