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

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

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

Регистрация: May 2006
Сообщений: 10
Question движение по направлению клипа.

Подскажите пожалуйста начинающему флешеру. Есть некий мувклип lodka, который нужно заставить плавать по поверхности озера. Все это вид сверху. Притом при нажатии кнопок влево и вправо лодка должна менять направление (это я понял что делается просто через изменения значения _rotation). А вот при нажатии вверх лодка должна плыть в ту сторону, в которую направлена ее корма (т.е. в ту сторону в которую она повернута) с неким ускорением (у меня пока стоит вверх). При нажатии клавиши вниз ускорение должно падать и лодка должна остановиться. Лодка не должна выплыть за пределы экрана. Хотелось бы еще наличие энерции при движении, повороте и остановке. Вот собственно и все. Наверняка для вас эта задачка окажется не сложной, но меня она поставила в тупик :-( Код у меня пока написан самый что ни наесть простой:

Код:
onClipEvent (enterFrame) {
	if (Key.isDown(Key.UP))
	{
		_y = _y-2;
	}
	if (Key.isDown(Key.DOWN))
	{
		_y = _y+2;
	}
	if (Key.isDown(Key.LEFT))
	{
		_rotation = _rotation-3;
	}
	if (Key.isDown(Key.RIGHT))
	{
		_rotation = _rotation+3;
	}
}
подскажите пожалуйства в каком направлении дигаться, какой нужен алгоритм? я запутался.

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

Регистрация: Dec 2005
Адрес: мухосранск
Сообщений: 661
Отправить сообщение для divinus с помощью ICQ
Денис Фет, физику учи дорогой... а точнее кинематику... ну и геометрия тебе в помощь...
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет...

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

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
Код:
//////////////////////////////////
/////создаём машинку =)///////////
//////////////////////////////////
this.createEmptyMovieClip("mc", 1);//здесь мы создаенм муви-клип оболочку, это не так обязательно просто изврат =) вы можете использовать свой обьект нарисованный в мувике дав ему на сцене имя //"mc"
with (this.mc) {//здесь мы рисуем то что будет в нашей оболочке муви-клипе с именем "mc"
	lineStyle(2, 0x000000, 100);
	beginFill(0x6633CC);
	moveTo(-25, -25);
	lineTo(-25, -25);
	lineTo(25, -25);
	lineTo(25, 25);
	lineTo(-25, 25);
	endFill();
}
///////////////////////////////////
///////задаем координаты на поле///
///////////////////////////////////
this.mc._x = 275;//здесь задаем первоначальные координаты расположения на по оси икс
this.mc._y = 200;//здесь по игрику
this.mc._rotation = -90;//этой командой мы задаем поворот нашей машинки если мы этого несделаем то она может ездить боком =) если машинка нарисована не програмно это необязательно развернуть можно вручную
////////////////////////////////////
////////задаём управление///////////
////////////////////////////////////
this.mc.onEnterFrame = function() {//этим мы создаем блок в котором будем писать команды которые будет выполнять наша машинка
	if (Key.isDown(Key.RIGHT)) {//этой командой мы крутим машинку вправо
		this._rotation += 3;//_rotation значит вращать
	}
	if (Key.isDown(Key.LEFT)) {//этой командай задаем поворот влево
		this._rotation -= 3;
	}
	if (Key.isDown(Key.UP)) {//задаем движение вперед
		this._y += 4*Math.sin(this._rotation*(Math.PI/180));//вычисляем синус
		this._x += 4*Math.cos(this._rotation*(Math.PI/180));//вычисляем косинус угла поворота машинки переводя его в радианы,так же обратите внимание число 4 отвечает за величену радиуса поворота тоесть тем выше число тем больше радиус
	}
	if (Key.isDown(Key.DOWN)) {//задаем движение назад при этом скорость уменьшаем в 2 раза 
		this._y -= (4*Math.sin(this._rotation*(Math.PI/180)))/2;
		this._x -= (4*Math.cos(this._rotation*(Math.PI/180)))/2;
	}
};
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники

Старый 03.07.2007, 20:06
Денис Фет вне форума Посмотреть профиль Отправить личное сообщение для Денис Фет Найти все сообщения от Денис Фет
  № 4  
Ответить с цитированием
Денис Фет

Регистрация: May 2006
Сообщений: 10
Цитата:
Сообщение от divinus
Денис Фет, физику учи дорогой... а точнее кинематику... ну и геометрия тебе в помощь...
правду говоришь, помниться еще в школе мне говорили преподаватели учи физику учи, а я все не учил и не учил :-)

Старый 03.07.2007, 20:16
Денис Фет вне форума Посмотреть профиль Отправить личное сообщение для Денис Фет Найти все сообщения от Денис Фет
  № 5  
Ответить с цитированием
Денис Фет

Регистрация: May 2006
Сообщений: 10
D12 огромное спасибо, теперь картина для меня стала намного яснее. Код работает.

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

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

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


 


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


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