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

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

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

Регистрация: Jul 2007
Сообщений: 3
По умолчанию Движение(2 вопроса)

У меня к вам 2 вопроса(а точнее 2 варианта реализации . . .)
Есть космический корабль

1)Допустим юзер там шелкает куда кораблику переместится,сначала я его поворачиваю
Код:
(Math.atan2 (a["ships" + String (MyShip)]._y - y, a["ships" + String (MyShip)]._x - x) * 180 / Math.PI) + 270;
- поворачивается,все хорошо,но я не могу его остановить что бы он продолжил свое движение.Как мне остановить rotation мувика когда он уже повернулся в нужную сторону

2)Второй вариант,движение корабля происходит по программно созданной кривой,но увы я не знаю как привязать клип корабля к кривой,чтобы он по ней двигался.

Старый 18.07.2007, 05:57
Therion вне форума Посмотреть профиль Отправить личное сообщение для Therion Найти все сообщения от Therion
  № 2  
Ответить с цитированием
Therion
 
Аватар для Therion

Регистрация: Aug 2005
Сообщений: 785
вот функция к первому вопросу
Код:
function spaceship(shipname) {
	onMouseDown = function () {
		X = _xmouse;
		Y = _ymouse;
	};
	shipname.onEnterFrame = function() {
		XD = this._x-X;
		YD = this._y-Y;
		R = Math.atan2(YD, XD)/(Math.PI/180);
		G = R-this._rotation;
		this._rotation += G/10;
	};
}
К 2-му варианту надо знать функцию кривой и потом както там с ней работать....)
__________________
Нано-флешер (в отставке)

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
1. останавливать так же как начинали движение (вы же не написали как)
2. использовать координаты точек этой же кривой (раз она програмно) в качестве координат скажем центра корабля.
__________________
"We Are The Champions My Friends!" Queen

Старый 18.07.2007, 12:00
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 4  
Ответить с цитированием
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Сообщение от en1gmat1c
...Есть космический корабль...
Лекция: Математика и физика Flash. Как раз в качестве примера комический караблик! Возможно лекция поможет по многим аспектам.

Старый 18.07.2007, 12:51
GreatRash вне форума Посмотреть профиль Отправить личное сообщение для GreatRash Найти все сообщения от GreatRash
  № 5  
Ответить с цитированием
GreatRash

Регистрация: Jun 2007
Сообщений: 118
Ух ты какая статья полезная!!! Спасибо большое

P.S. Извините за offtop.

Старый 18.07.2007, 13:39
goarcade вне форума Посмотреть профиль Отправить личное сообщение для goarcade Найти все сообщения от goarcade
  № 6  
Ответить с цитированием
goarcade

Регистрация: Sep 2006
Сообщений: 32
мне кажется, этот вариант реализации тоже подойдет:
Код:
createEmptyMovieClip("korablik",0);
korablik.beginFill(0xcccccc,100);
drawRect(korablik,-10,-5,20,10);
korablik.endFill();

createEmptyMovieClip("target",1);
target.beginFill(0xcc0000,100);
drawRect(target,-2,-2,4,4);
target.endFill();

korablik._x=100
korablik._y=100

function onMouseDown() {
	target._x = _xmouse;
	target._y = _ymouse;
	onEnterFrame = function () {
		goto(korablik,target._x,target._y,0.2,4)
	};
}
function goto(mc:MovieClip, gotoX:Number, gotoY:Number, w:Number, speed:Number) {
	var nx:Number = Math.cos(mc._rotation*Math.PI/180);
	var ny:Number = Math.sin(mc._rotation*Math.PI/180);
	var dx:Number = gotoX-mc._x;
	var dy:Number = gotoY-mc._y;
	//находим угол, между направлением мувика и точки{gotoX,gotoY}
	var theta:Number = Math.atan2(nx*dy-ny*dx, nx*dx+ny*dy);
	//w - коэффициент вращения от 0 до 1
	mc._rotation += w*theta*180/Math.PI;
	mc._x += nx*speed;
	mc._y += ny*speed;
}
function drawRect(mc:MovieClip,x:Number,y:Number,w:Number,h:Number)
{
	mc.moveTo(x  ,y  );
	mc.lineTo(x+w,y  );
	mc.lineTo(x+w,y+h);
	mc.lineTo(x  ,y+h);
	mc.lineTo(x  ,y  );
}

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

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

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


 


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


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