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

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

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

Регистрация: Oct 2007
Сообщений: 8
Отправить сообщение для Disney75 с помощью ICQ
Attention Рисование траектории 2 (линии)

В общем у меня такая проблема... у меня карта местности... и нужно сделать чтобы маршрут рисовался линиями... (линии прямые) Т.е. это даже не маршрут а просто соединение двух точек на карте...(выходил из одной и попадал в другую...) использование маски... не очень подходит...(
на одной из тем форума: http://www.flasher.ru/forum/showthread.php?t=80776
iNils выкладывал 2 примера... они в принципе ничего... но только если анимация на белом фоне... а если фоном является картинка? Не получается...((
Как мне решить эту задачку с наименьшими потерями?

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

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
Цитата:
Как мне решить эту задачку с наименьшими потерями?
заплатить за эту работу кому-нибудь Выигрыш во времени, если у тебя "время == деньги".
В принципе, используй line, зачем тут БитмапДата:
Код:
this.createEmptyMovieClip("triangle_mc", this.getNextHighestDepth());
triangle_mc.lineStyle(5, 0xff00ff, 100, true, "none", "round", "miter", 1);
triangle_mc.moveTo(200, 200);
onEnterFrame = function(){
triangle_mc.lineTo(_xmouse, _ymouse);
}
или
Код:
this.createEmptyMovieClip("triangle_mc", this.getNextHighestDepth());

triangle_mc.moveTo(200, 200);
onEnterFrame = function(){
	_mcolor = "0x"+random(9999).toString(16);
triangle_mc.lineStyle(5, _mcolor, 100, true, "none", "round", "miter", 1);
triangle_mc.lineTo(random(Stage.width*0.5)+Stage.width*0.3, random(Stage.height*0.5)+Stage.height*0.2);
}


Последний раз редактировалось Ostgur; 31.10.2007 в 14:46.
Старый 31.10.2007, 16:58
Disney75 вне форума Посмотреть профиль Отправить личное сообщение для Disney75 Найти все сообщения от Disney75
  № 3  
Ответить с цитированием
Disney75
 
Аватар для Disney75

Регистрация: Oct 2007
Сообщений: 8
Отправить сообщение для Disney75 с помощью ICQ
[quote=Ostgur]заплатить за эту работу кому-нибудь Выигрыш во времени, если у тебя "время == деньги".
В принципе, используй line, зачем тут БитмапДата:

моя твоя не понимать
Использовал и LineTo и MoveTo... в этом случае линия рисуется сразу же, а мне нужно, чтобы она из одной точки выходила и в другую попадала (наглядно)... двигаться то я ее научил... с определенным шагом меняем координаты... Не могу сделать чтобы она в нужные мне координаты попадала...((

Старый 31.10.2007, 17:06
Ostgur вне форума Посмотреть профиль Отправить личное сообщение для Ostgur Посетить домашнюю страницу Ostgur Найти все сообщения от Ostgur
  № 4  
Ответить с цитированием
Ostgur
 
Аватар для Ostgur

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
что не понятно?
Код:
//x1 - Начальная координата по оси абсцисс; 
//y1 - начальная координата по оси ординат;
//x2 - Конечная координата по оси абсцисс; 
//y2 - Конечная координата по оси ординат;
moveTo(x1, y1);
lineTo(x2, y2);

Старый 31.10.2007, 17:11
Disney75 вне форума Посмотреть профиль Отправить личное сообщение для Disney75 Найти все сообщения от Disney75
  № 5  
Ответить с цитированием
Disney75
 
Аватар для Disney75

Регистрация: Oct 2007
Сообщений: 8
Отправить сообщение для Disney75 с помощью ICQ
Извини конечно, я за Flash сел буквально вчера...)
Может не то что-то говорю...

//x1 - Начальная координата по оси абсцисс;
//y1 - начальная координата по оси ординат;
//x2 - Конечная координата по оси абсцисс;
//y2 - Конечная координата по оси ординат;
moveTo(x1, y1);
lineTo(x2, y2);

это понятно... но в этом случае линия сразу нарисованная получается...( Еще раз прошу прощения... за свое незнание...

Старый 31.10.2007, 17:27
Ostgur вне форума Посмотреть профиль Отправить личное сообщение для Ostgur Посетить домашнюю страницу Ostgur Найти все сообщения от Ostgur
  № 6  
Ответить с цитированием
Ostgur
 
Аватар для Ostgur

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
Код:
function drawLine(x1,y1,x2,y2){
this.lineStyle(5, 0xff00ff, 100, true, "none", "round", "miter", 1);
this.moveTo(x1, y1);
this.lineTo(x2, y2);
}
this.createEmptyMovieClip("my_draw", 0);
var a = 0;
my_draw.onEnterFrame = function(){
if(a == 1){drawLine(100,100, 110, 115);};
if(a == 5){drawLine(110,115, 125, 120);};
if(a == 10){drawLine(125,120, 144, 140);};
if(a == 15){drawLine(144,140, 150, 170);};
if(a == 20){drawLine(150,170, 160, 130);};
if(a == 25){drawLine(160,130, 160, 160);}; //и т.д.
a++;
}

Старый 31.10.2007, 18:20
Fl00r вне форума Посмотреть профиль Отправить личное сообщение для Fl00r Найти все сообщения от Fl00r
  № 7  
Ответить с цитированием
Fl00r
 
Аватар для Fl00r

Регистрация: Jun 2005
Адрес: dreams
Сообщений: 1,137
Отправить сообщение для Fl00r с помощью ICQ
Код:
function draw(what,x0,y0,x,y,k)
{
  if(f>=1/k) clearInterval(myInt); else { x*=k*f; y*=k*f; }
  what.clear();
  what.lineStyle (1, 0x990000);
  what.moveTo(x0, y0);
  what.lineTo(x,y);
  f++;
}
f=1; k = interval/time/1000;
this.createEmptyMovieClip("line",0);
myInt = setInterval(draw, interval, x0,y0,x,y);
Ну и задаешь координаты и параметры анимаии:
Код:
interval = 20; //длительность элементарного акта анимации, миллисекунды
time = 1; // длительность всей анимации, секунды
x0 = 0; // начальные координаты по оси x;
y0 = 0;
x = 500; // конечные координаты
y = 500;
__________________
Глупости какие-то говорите.

Старый 31.10.2007, 20:28
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 8  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
to Ostgur, оригинальное решение =) А если до 100000 надо будет дойти? Даже если такой алгоритм использовать вдруг придется, так как условия взаимоисключающие, то их надо связывать if... else if... else if..., чтобы уменьшить количество проверок или case использовать.

Старый 31.10.2007, 20:50
Ostgur вне форума Посмотреть профиль Отправить личное сообщение для Ostgur Посетить домашнюю страницу Ostgur Найти все сообщения от Ostgur
  № 9  
Ответить с цитированием
Ostgur
 
Аватар для Ostgur

Регистрация: Apr 2004
Адрес: macromedia—adobe Любит: Flash MX
Сообщений: 2,860
udaaff, если 100000 надо будет, то я бы использовал исходник iNils'а
но так как Disney75'y этот вариант не понравился — я предложил своё решение

Старый 31.10.2007, 21:48
Fl00r вне форума Посмотреть профиль Отправить личное сообщение для Fl00r Найти все сообщения от Fl00r
  № 10  
Ответить с цитированием
Fl00r
 
Аватар для Fl00r

Регистрация: Jun 2005
Адрес: dreams
Сообщений: 1,137
Отправить сообщение для Fl00r с помощью ICQ
Мммм. Она ломанная должна быть...
Тогда так будет проще всего
Код:
function draw (what,x0,y0,x,y)
{
	if (f > 1/k) return nextXY(); else { x = (x-x0)*k*f; y = (y-y0)*k*f; }
	what.clear();
	what.lineStyle(1, 0x990000);
	what.moveTo(x0,y0);
	what.lineTo(x0+x,y0+y);
	f++;
}
function nextXY()
{
	pos +=2;
	ho = this.createEmptyMovieClip("line"+pos, pos);
	clearInterval(myInt);
	if(pos < xy.length)
	{
		myInt = setInterval(draw, interval, ho, xy[pos-2], xy[pos-1], xy[pos], xy[pos+1]);
	}
	f=1;
}
pos = 0; f = 1;	k = interval/time/1000;
nextXY();
ну и сами данные, которыми можно играться.
Массив с координатами может быть сколь угодно велик. Координаты вносятся попарно x,y
Код:
interval = 20; // интервал, в милисекундах
time = 1; // длительность анимации, в секундах
xy = [0, 0,      //начальное положение
	  150, 0,
	  150, 150,
	  0, 150,
	  0,0        //конечное положение
	  ];
__________________
Глупости какие-то говорите.


Последний раз редактировалось Fl00r; 31.10.2007 в 21:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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