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

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

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

Регистрация: Jun 2015
Сообщений: 26
По умолчанию Из точки "А" в точку "В"

Здравствуйте!

Задача:
При нажатии кнопки мыши, в точке "А" появляется объект. И начинает двигаться в ту точку где был курсор мышки во время щелчка, по прибытию удаляется.

я создал объект (класс)
поставил слушателя событий на щелчек мыши.
по щелчку объект появляется в точке

но как же наделить объект таким свойством, чтобы он летел туда куда мышка щелкнула?

Подскажите пожалуйста! Думаю для Вас, опытных флэшеров это не составит труда.

Заранее, Большое спасибо!

Старый 13.06.2015, 11:13
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А как ты делаешь? Хотя бы первые шаги до того момента, где затык.
__________________
Поймай яблоко 2!

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

Регистрация: Jun 2015
Сообщений: 26
есть класс Rocket (extend MovieClip)

в основном классе стоит обработчик событий:

Код AS3:
var r:Rocket = new Rocket;
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, fire);
 
function fire(e:Event){
 
addChild(r);
r.x = 30;
r.y = 230;
 
}
Вопрос:

Как сделать чтобы ракета (r:Rocket) летела в точку куда щелкнула мышка?

Старый 13.06.2015, 14:04
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 4  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
stageX и stageY, только вместо Event напишите MouseEvent

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
DirectionMotionExample.swf   (18.4 Кб)


Вот.
Вложения
Тип файла: rar src.rar (10.5 Кб, 17 просмотров)
Тип файла: swf DirectionMotionExample.swf (18.4 Кб, 94 просмотров)
__________________
There is no thing in this world that is not simple.

Старый 13.06.2015, 14:31
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
У меня почти то же самое что и у ZackMercury, но вдруг пригодится.
Это класс вашей ракеты. У неё есть метод moveToTarget, который двигает ракету к заданной цели.
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
 
	/**
	 * ...
	 * @author samana
	 */
	public class Rocket extends Sprite 
	{
		private var _target:Point = new Point(); //сюда запишем точку, куда нужно двигаться (клик мыши)
		private var _speedX:Number;
		private var _speedY:Number;
 
		public var speed:Number = 10; //скорость движения
 
 
		// начать движение к заданной точке
		public function moveToTarget(targetX:Number, targetY:Number):void
		{
			_target.x = targetX;
			_target.y = targetY;
 
			var dx:Number = _target.x - x;
			var dy:Number = _target.y - y;
			var ang:Number = Math.atan2(dy, dx);
 
			_speedX = Math.cos(ang) * speed;
			_speedY = Math.sin(ang) * speed;
 
			//повернуть объект в сторону движения если надо
			rotation = ang / Math.PI * 180;
 
			addEventListener(Event.ENTER_FRAME, enterFrame_moved);
 
		}
 
		private function enterFrame_moved(e:Event):void 
		{
			//узнаём расстояние между объектом и целью 
			var dx:Number = _target.x - x;
			var dy:Number = _target.y - y;
			var dist:Number = Math.sqrt(dx * dx + dy * dy);
 
			//если расстояние между объектом и целью меньше шага скорости, то останавливаемся
			if (dist < speed)
			{
				x = _target.x;
				y = _target.y;
				removeEventListener(Event.ENTER_FRAME, enterFrame_moved);
				if (parent) parent.removeChild(this);
				//trace(this, "stoped");
			}
			//иначе движемся к цели
			else
			{
				x += _speedX;
				y += _speedY;
				//trace(this, "is moved");
			}
 
		}
 
	}
 
}
Запуск по клику на сцене, примерно такой:
Код AS3:
public class Main extends Sprite 
{
 
	private var _pointA:Point;
 
	public function Main() 
	{
		_pointA = new Point(50, 50);
		stage.addEventListener(MouseEvent.CLICK, stage_click);
	}
 
	private function stage_click(e:MouseEvent):void 
	{
		var rocket:Rocket = new Rocket();
		rocket.x = _pointA.x;
		rocket.y = _pointA.y;
		addChild(rocket);
 
		rocket.moveToTarget(stage.mouseX, stage.mouseY);
	}
}

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

Регистрация: Jun 2015
Сообщений: 26
2ZackMercury
2samana

Ребята, спасибо огромное!!! Сейчас буду изучать и внедрять, это именно то что нужно!!!!
Большое спасибо!

Добавлено через 1 минуту
p.s.

Загрузил картинку в профиль, еще несколько дней назад, а она не отображается,
Уже и модератору писал...не отвечает...

Старый 13.06.2015, 14:51
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,921
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
__________________
There is no thing in this world that is not simple.

Старый 13.06.2015, 16:38
dubspectra вне форума Посмотреть профиль Отправить личное сообщение для dubspectra Найти все сообщения от dubspectra
  № 9  
Ответить с цитированием
dubspectra
 
Аватар для dubspectra

Регистрация: Jun 2015
Сообщений: 26
2ZackMercury

Ахахах) Спасибо))

Старый 13.06.2015, 17:16
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 10  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Оффтоп: ава классная!
__________________
Поймай яблоко 2!

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

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

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


 


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


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