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

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

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

Регистрация: Sep 2002
Сообщений: 202
По умолчанию рисование контуров и проблемы с маскированием

Приветствую
У меня вопрос, который задавался уже часто
Стоит Flash8

есть некий контур, нужно создать анимацию как будто его рисуют карандашем

как это сделать просто и элегантно?

я сделал так:
1) разбил контур на линии
2) для каждой линии сделал маску
3) двигаю маски

var start_timer = getTimer();
var time_array = new Array(/*элементы*/));

var oldx_array = new Array(/*элементы*/);
var newx_array = new Array(/*элементы*/));

var oldy_array = new Array(/*элементы*/));
var newy_array = new Array(/*элементы*/));

this.onEnterFrame = function()
{
var current_timer = getTimer();
var time = current_timer - start_timer;
var delta_coeff;

for (var id = 0; id < oldx_array.length - 1; ++ id)
{
if ((time >= time_array[id]) && (time < time_array[id + 1]))
{
delta_coeff = (time - time_array[id]) / (time_array[id + 1] - time_array[id]);
this["mask" + (id + 1)]._x = oldx_array[id] + delta_coeff * (newx_array[id] - oldx_array[id]);
this["mask" + (id + 1)]._y = oldy_array[id] + delta_coeff * (newy_array[id] - oldy_array[id]);
}
}
}

но тут несколько минусов
1) какие-то проблемы с координатами масок (это правится если каждая маска -
то не поворот и растяжение общей, а уникальный символ)
2) почему-то не маскируется когда двигается несколько символов на одном слое
3) самое главное!!! Когда много линий - слишком муторно и тяжело это делать

как сделать быстрее, ведь должны быть методы

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

Регистрация: Dec 2005
Сообщений: 316
если участки прямолинейные, то загони контрольный точки в массив и используй clip_mc.lineTo(x,y)

Старый 16.05.2006, 16:22
Zhihar вне форума Посмотреть профиль Отправить личное сообщение для Zhihar Найти все сообщения от Zhihar
  № 3  
Ответить с цитированием
Zhihar

Регистрация: Sep 2002
Сообщений: 202
Так это линия появится сразу а мне надо чтобы рисовалось медленно - как будто карандашем по бумаге ведут

и кроме того участки многие не прямые

Старый 16.05.2006, 16:39
AlexSol вне форума Посмотреть профиль Отправить личное сообщение для AlexSol Найти все сообщения от AlexSol
  № 4  
Ответить с цитированием
AlexSol

Регистрация: Dec 2005
Сообщений: 316
я последний ра рисовал по точкам. плавность достигается примерно так
Код:
this.createEmptyMovieClip("line_mc", 100);
line_mc.lineStyle(6, 0x553300, 100);
var start_x:Number = 50;
var start_y:Number = 100;
var addz:Number = 1;
var start_l:Boolean = false;
line_mc.moveTo(start_x, start_y);
_root.onEnterFrame = function() {
	if (start_x+addz*5<=300) {
		var delta_y:Number = 1-Math.random()*2;
		line_mc.lineTo(start_x+addz*5, start_y+delta_y);
		addz++;
		start_l = true;
	} else {
		//
	}
};

Старый 16.05.2006, 16:40
Samodelkin вне форума Посмотреть профиль Отправить личное сообщение для Samodelkin Найти все сообщения от Samodelkin
  № 5  
Ответить с цитированием
Samodelkin

Регистрация: Jul 2005
Адрес: Москва
Сообщений: 452
Отправить сообщение для Samodelkin с помощью ICQ
Так ты разбей свою линию на маленькие и рисуй их в сетИнтервале.
__________________
Давайте отбросим факты, чтобы увидеть суть

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

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

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


 


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


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