
16.05.2006, 13:49
|
|
Регистрация: 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) самое главное!!! Когда много линий - слишком муторно и тяжело это делать
как сделать быстрее, ведь должны быть методы
|