Просмотр полной версии : управление скоростью програмной прорисовки линий
код:
//рисуем линию
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. По всей видимости проще редактировать(ИМХО просто изменить пару координат быстрее чем заново анимировать линию).
...спасибо...но мне кажется это полумера...много проблем возникает...работа неоправданно затягивается...должен быть способ проще... :)
Division
06.11.2008, 15:38
ИМХО это делается за 10 минут, не вижу ничего сложного. Может кто знает способ проще, подождём ещё (:
Имеется ввиду это?
this.onEnterFrame = function () {
this.clear();
this.lineStyle (4, 0x0000FF);
if (x!=100){
x=x+10;
}
this.moveTo (5, 5);
this.lineTo (x, x);
};
это не работает...или я что то не так делаю... :(
добавьте в начале кода var x:Number = 0;
...ага...примерно так я и думал...но это не то...попробуйте таким способом нарисовать плавную линию под углом, например, градусов в 15...дело в том, что приходится рисовать много маленьких отрезков и все промежуточные координаты рассчитывать ручками...а нужен способ, при котором вы задаете начальную и конечную координаты, скорость прорисовки, а дальше расчитывает и рисует программа...
Division
06.11.2008, 17:15
а нужен способ, при котором вы задаете начальную и конечную координаты, скорость прорисовки, а дальше расчитывает и рисует программа...
Напиши для этого класс-обёртку. Способ такой. Есть две точки. Из координат второй вычитаем первые, полученный вектор нормализуем и умножаем на скорость(сколько пикселей линии за раз рисовать). Назовём этот вектор v. Это и будет наше смещение за кадр. Дальше, вводим вектор - текущая позиция. Каждый кадр рисуем линию от текущей позиции до текущей позиции + v и прибавляем к текущей позиции v. Ну и смотрим когда дойдём до конечной точки, прекращаем рисование.
Математика 9 класс.
в принципе, предложенный алгоритмможно заменить следующим (мне это долго писать, но вы, полагаю, справитесь быстро):
в переменную передается текущее время и отталкиваясь от этого счетчика можно ставить точки (черточки, линии) затем переменная обнуляется и все начинается снова, но уже с другой линией...а вот как рисовать дугу...еще не представляю...:wacko:
как то так...
Добавлено через 3 минуты
Напиши класс-обёртку...полученный вектор нормализуем и умножаем на скорость...Математика 9 класс.
...к сожалению, у меня пробелы в образовании...кое что непонятно вовсе...
например:
класс-обёртка?
нормализовать вектор?
...и еще...а как тогда рисовать дуги?
Division
06.11.2008, 17:25
По поводу дуги - на помощь приходит curveTo. Ну или тригонометрия (:
...принцип понятен...но до конкретного кода я не доживу...впрочем спасибо за помощь...если разберусь с понятиями попробую написать код... :wacko:
Division
06.11.2008, 17:41
класс-обёртка
Ну просто класс, который будет реализовывать нужный тебе функционал. Так удобней.
нормализовать вектор?
Поделить каждую компоненту на длину. Получим единичный вектор, который направлен в ту же сторону.
http://www.gamedev.ru/terms/Normalization
спасибо...теперь буду учиться писать классы... :)
Может этот пример вам хоть немного поможет?
Division
07.11.2008, 11:09
Вот и от меня примерчик (: Так и не реализованный маленький проект(заказчик отказался) , в котором нажимаешь на город, и от него медленно отходят линии к другим городам (: На флешке две окружности, по ним можно клацать мышкой. Всё немного сложно из-за того что линии ломанные, но думаю всё равно может пригодиться.
UPD: кстати, я так посмотрел, вообщем-то класс Line из примера можно использовать почти без изменений. Правда он тянет за собой Vector2, но это не страшно ИМХО (: Так что если не лень, можешь посмотреть как оно работает и использовать класс Line.
...хм...спасибо...будем изучать...надеюсь что у меня все получится... :)
Mnilionic
07.11.2008, 15:37
офтоп: на Спектруме дуги функцией draw, понится рисовались плавно да ещё и с хитрой инерцией :))
киньте пожалуйста такой исходник на zvotia@ya.ru
то что предложил Division - это очень классно, так как после создания класса трудно не будет.
Однако, в вашем случае по-моему проще нарисовать эту самую дугу и открывать постепенно маской, эффект будет такой же и хлопот для ас будет меньше.
а лекбез про маску по-подробней пожалуйста. (ну а если исходник - то вообще огромнейший респект!)
Спасибо огромное, ща попробую!
Добавлено через 23 минуты
вроде легко, но сам сделать такой же не смог, для бестолковых пошажно можно?
Аська есть? Я тебе проще там объясню
представьте, что у Вас 1000 линий, формирующих технический рисунок домкрата...и вы хотите показать формирование рисунка "якобы рисующимся карандашом"...сколько времени у Вас займет рисование масок?:wacko:
Народ, нужно чтобы в галерее описание фотографий было на русском языке(у меня токо латиница получается)
Жень Шень
22.01.2009, 11:13
Народ, нужно чтобы в галерее описание фотографий было на русском языке(у меня токо латиница получается)
Сохранить XML в формате UTF8 (юникод)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.