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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.09.2013, 18:33
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 11  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вообще у меня вопрос к опытным флешарам - Вы пользуетесь startDrag() ?
Код AS3:
event.stopPropagation()
Прекрастно подходит для кнопок, и когда ТС указал на мою невнимательность, я первое что хотел воплотить
это именно stopPropagation(). Но если его повесить на перетаскиваемый обьект, то он срабатывает от рывков. А если на что то другое, то обработчик событий не видет родителя таргет.

Старый 27.09.2013, 18:43
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 12  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Ещё ребенок должен сообщить x,y дельты перемещений родителю

Добавлено через 1 минуту
это задача вариант трансформер менеджера

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

Регистрация: Jun 2013
Сообщений: 133
Что Вас в нем так напугало?

Старый 27.09.2013, 19:07
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 14  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Вы вероятно не поняли вопрос. Драгается ребенок, а родитель смещается на то расстояние, на которое смещается ребенок. Сам фон не драгается. Поэтому ему стоп драг не нужен.

Старый 27.09.2013, 19:15
kelod вне форума Посмотреть профиль Отправить личное сообщение для kelod Найти все сообщения от kelod
  № 15  
Ответить с цитированием
kelod

Регистрация: Jan 2012
Сообщений: 97
Цитата:
Сообщение от Babylon Посмотреть сообщение
Вы вероятно не поняли вопрос. Драгается ребенок, а родитель смещается на то расстояние, на которое смещается ребенок. Сам фон не драгается. Поэтому ему стоп драг не нужен.
не кто не дёргается, рывки происходят при выходе мыши за стэйдж и возвращении назад в другом месте, основная проблема что происходит срыв мыши когда тянешь за ребёнка

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

Регистрация: Jun 2013
Сообщений: 133
Видать я действительно что то не так понял. По первому посту и коду в нем подумал, что перемещаем именно родителя. Смысл двигать ребенка > потом двигать родителя > двигать всех остальных детей

Добавлено через 3 минуты
kelod, я привел пример кода, попробуйте его.

Старый 27.09.2013, 19:21
kelod вне форума Посмотреть профиль Отправить личное сообщение для kelod Найти все сообщения от kelod
  № 17  
Ответить с цитированием
kelod

Регистрация: Jan 2012
Сообщений: 97
Цитата:
Сообщение от Rivexe Посмотреть сообщение
Видать я действительно что то не так понял. По первому посту и коду в нем подумал, что перемещаем именно родителя. Смысл двигать ребенка > потом двигать родителя > двигать всех остальных детей
мне вообще-то и нужно двигать родителя, но поверх родителя ребёнок, посему захватывает событие именно дитё, а не родитель((

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

Регистрация: Jun 2013
Сообщений: 133
kelon, Ваш доработанный код:

Код AS3:
addChild(fon);
fon.addChild(spt1);
fon.addChild(spt2);
fon.addChild(spt3);
 
fon.addEventListener(MouseEvent.MOUSE_DOWN, nach);
fon.addEventListener(MouseEvent.MOUSE_UP, kon);
fon.addEventListener(MouseEvent.MOUSE_OUT, kon);
Код AS3:
private function kon(e:MouseEvent):void 
{
	fon.stopDrag();
}
 
private function nach(e:MouseEvent):void 
{
	if(e.target.parent == fon || (e.relatedObject && e.relatedObject.parent == fon))
		return;
 
	fon.startDrag();
 
}

Старый 27.09.2013, 19:39
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 19  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Вот почему при таком подходе, если быстро дергать мышкой, то драг срывается?
Код AS3:
package
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
 
	public class Drag extends Sprite 
	{
		private var _container:Sprite;
 
		private var _spriteArray:Vector.<Sprite>;
 
		private var _conteinersArray:Vector.<Sprite>;
		private var _distantion:Point;
		private var _target:Sprite;
 
		public function Drag() 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event=null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			_conteinersArray = Vector.<Sprite>([]);
 
			this.addEventListener(MouseEvent.MOUSE_DOWN, this_mouseDownHandler);
			_container = new Sprite();
			_container.name = 'con';
			_conteinersArray.push(_container);
			super.addChild(_container);
			var circle:Sprite;
			_spriteArray = Vector.<Sprite>([]);
 
 
			for (var i:int = 0; i < 10; i++) 
			{
				circle = new Sprite();
				circle.graphics.beginFill(Math.random() * 0xf6f6f6);
				circle.graphics.drawCircle(Math.random() * stage.stageWidth, Math.random() * stage.stageHeight, 30);
				circle.graphics.endFill();
				_spriteArray.push(circle);
				_container.addChild(_spriteArray[i] as DisplayObject);
			}
		}
 
		private function this_mouseDownHandler(event:MouseEvent):void 
		{
			if (_conteinersArray.indexOf(event.target > 0))
			{
				trace('good');
				this.addEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
				this.addEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
				_target = event.target.parent as Sprite;
				_distantion = new Point(event.localX, event.localY);
			}
		}
 
		private function this_mouseUpHandler(event:MouseEvent):void 
		{
			trace('up');
			this.removeEventListener(MouseEvent.MOUSE_UP, this_mouseUpHandler);
			this.removeEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
			event.stopPropagation();
		}
		private function this_mouseMoveHandler(event:MouseEvent):void 
		{
			_target.x =  mouseX - _distantion.x;
			_target.y = mouseY - _distantion.y;
			event.updateAfterEvent();
		}
 
	}
 
}

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

Регистрация: Jun 2013
Сообщений: 133
Akopalipsis, потом что событие MOUSE_MOVE висит на спрайте, который закрашен кружками, соответственно оно диспачится только когда вы водите над ними.
замените:
Код AS3:
this.addEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);
на:
Код AS3:
stage.addEventListener(MouseEvent.MOUSE_MOVE, this_mouseMoveHandler);

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

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

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


 


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


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