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

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

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

Регистрация: Apr 2013
Сообщений: 89
По умолчанию совет полет объекта в место нажатия мышки

Привет.

Моя задача - выпустить объект в место нажатия мыши на сцене.

Проблема:

enter_frame у меня используется для перемещения объекта из которого вылетает пуля.

Сначала я задумал завести еще один enter_frame, отдельный для полета пули

Но получил ошибку

TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.events::Event@16a21dd1 в flash.events.MouseEvent.

Сейчас в голове крутится создать отдельный класс, в который я буду закидывать текущие координаты объекта из которого вылетает пулька, заведу там enter_frame и буду, с помощью проекций на оси х и у перемещать пульку.

Но. Будет ли такой подход правильным? Может ли возникнуть проблема с enter_frame(Мне кажется что enter_frame может быть только один)?

Добавлено через 1 минуту
А может есть способ подписаться на один и тот же enter_frame из обработчика клика мыши?

Добавлено через 9 минут
Получше опишу что у меня в кодах:

1.Я создаю объект, управляющийся с клавиатуры, подключаю к нему enter_frame
2.Нажимаю по сцене,
3.В обработчике события нажатия мыши я создаю пульку в текущем положении объекта из которого он должен вылетать.
4.Сталкиваюсь с проблемой: В enter_frame мне нужно управлять именно тем объектом, который у меня появился в обработчике мыши.

Возможно получить из обработчика mouseEvent координаты нажатия мыши и закинуть их в enter-frame для управления объекта?

Старый 20.03.2014, 19:43
maincode вне форума Посмотреть профиль Отправить личное сообщение для maincode Посетить домашнюю страницу maincode Найти все сообщения от maincode
  № 2  
Ответить с цитированием
maincode

Регистрация: Feb 2010
Адрес: Город суеты
Сообщений: 191
Например можно использовать библиотеку FPTween:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.MouseEvent;
 
	import fl.transitions.easing.Back;
 
	import ru.flashpress.tween.display.FPTweenSprite;
 
	[SWF(frameRate="30")]
	public class tweenBall extends Sprite
	{
		private var ball:FPTweenSprite;
		public function tweenBall()
		{
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			//
			ball = new FPTweenSprite();
			ball.graphics.beginFill(0xff0000, 1);
			ball.graphics.drawCircle(0, 0, 20);
			ball.x = this.stage.stageWidth/2;
			ball.y = this.stage.stageHeight/2;
			ball.addTween('x', Back.easeOut, 0.6);
			ball.addTween('y', Back.easeOut, 0.6);
			this.addChild(ball);
			//
			this.stage.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private function clickHandler(event:MouseEvent):void
		{
			ball.x = this.mouseX;
			ball.y = this.mouseY;
		}
	}
}
Результат во флешке
__________________
FlashPress.ru | Blog

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

Регистрация: Feb 2012
Сообщений: 1,540
А лучше использовать открытый, популярный и многофункциональный, например, TweenLite.

Старый 21.03.2014, 03:17
vlbuto вне форума Посмотреть профиль Отправить личное сообщение для vlbuto Найти все сообщения от vlbuto
  № 4  
Ответить с цитированием
vlbuto

Регистрация: Apr 2013
Сообщений: 89
А собственными средствами as3 нельзя простенько, как-либо сделать?

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Можно конечно, тему уже открывали
http://www.flasher.ru/forum/showthread.php?t=205640

Посмотрите второй ответ, там полностью рабочий код (только не называйте класс пульки Pulka)

Если нужно удалять при долета до точки, сделайте простую проверку на пройденную дистанцию.


Последний раз редактировалось KumoKairo; 23.03.2014 в 09:53.
Старый 23.03.2014, 03:19
vlbuto вне форума Посмотреть профиль Отправить личное сообщение для vlbuto Найти все сообщения от vlbuto
  № 6  
Ответить с цитированием
vlbuto

Регистрация: Apr 2013
Сообщений: 89
Цитата:
Сообщение от KumoKairo Посмотреть сообщение
Можно конечно, тему уже открывали
http://www.flasher.ru/forum/showthread.php?t=205640

Посмотрите второй ответ, там полностью рабочий код (только не навайте класс пульки Pulka)

Если нужно удалять при долета до точки, сделайте простую проверку на пройденную дистанцию.
Спасибо ОГРОМНЕЙШЕЕ!!!
Супер пример, супер комменты, классы новые и способ принципиально новый, но я обязательно разберусь.

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

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

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


 


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


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