PDA

Просмотр полной версии : управление скоростью програмной прорисовки линий


dark7to
06.11.2008, 13:11
код:
//рисуем линию
this.moveTo(667.0, 1.0);// Устанавливаем начальные кординаты
this.lineStyle(1, 0x000000); //задаем стиль
this.lineTo(667.0, 597.0); //задаем координаты
...линия появляется, но! мгновенно...
Вопрос:
...есть ли возможность управления скоростью такой прорисовки программно создаваемой графики, при непременном условии as is, т.е. не меняя параметров самого фильма (кадров и т.п.)?
...возможно есть другие способы программной прорисовки, имеющие параметр "скорость прорисовки"?
...каковы преимущества программной прорисовки вообще?

Division
06.11.2008, 13:18
1. Можно рисовать линию в enterFrame по кускам.
3. По всей видимости проще редактировать(ИМХО просто изменить пару координат быстрее чем заново анимировать линию).

dark7to
06.11.2008, 15:18
...спасибо...но мне кажется это полумера...много проблем возникает...работа неоправданно затягивается...должен быть способ проще... :)

Division
06.11.2008, 15:38
ИМХО это делается за 10 минут, не вижу ничего сложного. Может кто знает способ проще, подождём ещё (:

Валиант
06.11.2008, 15:55
Имеется ввиду это?
this.onEnterFrame = function () {
this.clear();
this.lineStyle (4, 0x0000FF);
if (x!=100){
x=x+10;
}
this.moveTo (5, 5);
this.lineTo (x, x);

};

dark7to
06.11.2008, 16:07
это не работает...или я что то не так делаю... :(

Валиант
06.11.2008, 16:13
добавьте в начале кода var x:Number = 0;

dark7to
06.11.2008, 17:09
...ага...примерно так я и думал...но это не то...попробуйте таким способом нарисовать плавную линию под углом, например, градусов в 15...дело в том, что приходится рисовать много маленьких отрезков и все промежуточные координаты рассчитывать ручками...а нужен способ, при котором вы задаете начальную и конечную координаты, скорость прорисовки, а дальше расчитывает и рисует программа...

Division
06.11.2008, 17:15
а нужен способ, при котором вы задаете начальную и конечную координаты, скорость прорисовки, а дальше расчитывает и рисует программа...
Напиши для этого класс-обёртку. Способ такой. Есть две точки. Из координат второй вычитаем первые, полученный вектор нормализуем и умножаем на скорость(сколько пикселей линии за раз рисовать). Назовём этот вектор v. Это и будет наше смещение за кадр. Дальше, вводим вектор - текущая позиция. Каждый кадр рисуем линию от текущей позиции до текущей позиции + v и прибавляем к текущей позиции v. Ну и смотрим когда дойдём до конечной точки, прекращаем рисование.
Математика 9 класс.

dark7to
06.11.2008, 17:20
в принципе, предложенный алгоритмможно заменить следующим (мне это долго писать, но вы, полагаю, справитесь быстро):
в переменную передается текущее время и отталкиваясь от этого счетчика можно ставить точки (черточки, линии) затем переменная обнуляется и все начинается снова, но уже с другой линией...а вот как рисовать дугу...еще не представляю...:wacko:
как то так...

Добавлено через 3 минуты
Напиши класс-обёртку...полученный вектор нормализуем и умножаем на скорость...Математика 9 класс.

...к сожалению, у меня пробелы в образовании...кое что непонятно вовсе...
например:
класс-обёртка?
нормализовать вектор?

...и еще...а как тогда рисовать дуги?

Division
06.11.2008, 17:25
По поводу дуги - на помощь приходит curveTo. Ну или тригонометрия (:

dark7to
06.11.2008, 17:35
...принцип понятен...но до конкретного кода я не доживу...впрочем спасибо за помощь...если разберусь с понятиями попробую написать код... :wacko:

Division
06.11.2008, 17:41
класс-обёртка
Ну просто класс, который будет реализовывать нужный тебе функционал. Так удобней.
нормализовать вектор?
Поделить каждую компоненту на длину. Получим единичный вектор, который направлен в ту же сторону.
http://www.gamedev.ru/terms/Normalization

dark7to
06.11.2008, 18:40
спасибо...теперь буду учиться писать классы... :)

Валиант
07.11.2008, 08:56
Может этот пример вам хоть немного поможет?

Division
07.11.2008, 11:09
Вот и от меня примерчик (: Так и не реализованный маленький проект(заказчик отказался) , в котором нажимаешь на город, и от него медленно отходят линии к другим городам (: На флешке две окружности, по ним можно клацать мышкой. Всё немного сложно из-за того что линии ломанные, но думаю всё равно может пригодиться.
UPD: кстати, я так посмотрел, вообщем-то класс Line из примера можно использовать почти без изменений. Правда он тянет за собой Vector2, но это не страшно ИМХО (: Так что если не лень, можешь посмотреть как оно работает и использовать класс Line.

dark7to
07.11.2008, 11:42
...хм...спасибо...будем изучать...надеюсь что у меня все получится... :)

Mnilionic
07.11.2008, 15:37
офтоп: на Спектруме дуги функцией draw, понится рисовались плавно да ещё и с хитрой инерцией :))

votia
02.01.2009, 03:18
киньте пожалуйста такой исходник на zvotia@ya.ru

Zik.
02.01.2009, 12:35
то что предложил Division - это очень классно, так как после создания класса трудно не будет.
Однако, в вашем случае по-моему проще нарисовать эту самую дугу и открывать постепенно маской, эффект будет такой же и хлопот для ас будет меньше.

votia
02.01.2009, 20:04
а лекбез про маску по-подробней пожалуйста. (ну а если исходник - то вообще огромнейший респект!)

Zik.
02.01.2009, 20:34
???
че там трудного?

votia
02.01.2009, 20:53
Спасибо огромное, ща попробую!

Добавлено через 23 минуты
вроде легко, но сам сделать такой же не смог, для бестолковых пошажно можно?

Zik.
02.01.2009, 23:08
Аська есть? Я тебе проще там объясню

votia
03.01.2009, 01:41
как тебе такой вариант?

dark7to
12.01.2009, 12:44
представьте, что у Вас 1000 линий, формирующих технический рисунок домкрата...и вы хотите показать формирование рисунка "якобы рисующимся карандашом"...сколько времени у Вас займет рисование масок?:wacko:

votia
22.01.2009, 01:50
Народ, нужно чтобы в галерее описание фотографий было на русском языке(у меня токо латиница получается)

Жень Шень
22.01.2009, 11:13
Народ, нужно чтобы в галерее описание фотографий было на русском языке(у меня токо латиница получается)
Сохранить XML в формате UTF8 (юникод)