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

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

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

Регистрация: Aug 2009
Сообщений: 74
По умолчанию Drag and Drop

Код AS3:
function stopDragging(event:MouseEvent):void 
{ 
    event.target.stopDrag(); 
    trace(event.target.x);//выводит текущие коордианты
    trace(event.target.y);//а реально получить координаты которые были до перетаскивания? не используя глобальные переменные.
}

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

Регистрация: May 2009
Сообщений: 63
Конечно реально (тестировать во FLA файле):

Код AS3:
//переменные с координатами x и y перед началом перетаскивания: 
var X:int;
var Y:int;
//объект который будем таскать:
var cont:Sprite = new Sprite();
//рисуем тут кружочек
cont.graphics.beginFill(0xFF0000);
cont.graphics.drawCircle(30, 30, 30);
cont.graphics.endFill();
//добавляем слушатели нужных событий:
cont.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDOWN);
cont.addEventListener(MouseEvent.MOUSE_UP, onMouseUP);
//добавляем в список отображения
addChild(cont);
//обработчик понятно для чего
function onMouseDOWN(e:MouseEvent){
	X = cont.x;//запоминаем x
	Y = cont.y;//запоминаем y
	e.target.startDrag();//начинаем движение...
}
//еще один:
function onMouseUP(e:MouseEvent){
	e.target.stopDrag();//останавливаем движение...
	//выводим наглядное сообщение:
	trace("X был "+X+" стал "+cont.x+"\nY был "+Y+" стал "+cont.y);
}
__________________
Все не так просто, как кажется... все гораздо проще...

Старый 07.08.2009, 22:08
WRC_S вне форума Посмотреть профиль Отправить личное сообщение для WRC_S Посетить домашнюю страницу WRC_S Найти все сообщения от WRC_S
  № 3  
Ответить с цитированием
WRC_S
[+6 23.11.09]
 
Аватар для WRC_S

Регистрация: Jun 2009
Адрес: Россия
Сообщений: 318
Отправить сообщение для WRC_S с помощью ICQ
Код AS3:
var X:int;
var Y:int;
это же у тебя получились глобальные переменные в классе, чел спрашивал без использование глобальных!

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

Регистрация: May 2009
Сообщений: 220
доделал код Аллиас:
Код AS3:
//объект который будем таскать:
var cont:Sprite = new Sprite();
//рисуем тут кружочек
cont.graphics.beginFill(0xFF0000);
cont.graphics.drawCircle(30, 30, 30);
cont.graphics.endFill();
//добавляем слушатели нужных событий:
cont.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDOWN);
cont.addEventListener(MouseEvent.MOUSE_UP, onMouseUP);
//добавляем в список отображения
addChild(cont);
//обработчик понятно для чего
function onMouseDOWN(e:MouseEvent){
	cont.name = cont.x + " " + cont.y;
	e.target.startDrag();//начинаем движение...
}
//еще один:
function onMouseUP(e:MouseEvent){
	e.target.stopDrag();//останавливаем движение...
 
	var lastX:String = cont.name.substr(0, cont.name.indexOf(" "));
	var lastY:String = cont.name.substr(cont.name.indexOf(" ")+1, (cont.name.length) - (cont.name.indexOf(" ")+1));
 
	//выводим наглядное сообщение:
	trace("X был "+uint(lastX)+" стал "+cont.x+"\nY был "+uint(lastY)+" стал "+cont.y);
}

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

Регистрация: May 2009
Сообщений: 63
switcher!, Круто!!! Не знал что свойству name можно задавать значение... век живи - век учись.

вот тогда самая динамичная версия кода (все ссылки на таскаемый объект в e.target):
Код AS3:
//объект который будем таскать:
var cont:Sprite = new Sprite();
//рисуем тут кружочек
cont.graphics.beginFill(0xFF0000);
cont.graphics.drawCircle(30, 30, 30);
cont.graphics.endFill();
//добавляем слушатели нужных событий:
cont.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDOWN);
cont.addEventListener(MouseEvent.MOUSE_UP, onMouseUP);
//добавляем в список отображения
addChild(cont);
//обработчик понятно для чего
function onMouseDOWN(e:MouseEvent){
	e.target.name = e.target.x + " " + e.target.y;
	e.target.startDrag();//начинаем движение...
}
//еще один:
function onMouseUP(e:MouseEvent){
	e.target.stopDrag();//останавливаем движение...
 
	var lastX:String = e.target.name.substr(0, e.target.name.indexOf(" "));
	var lastY:String = e.target.name.substr(e.target.name.indexOf(" ")+1, (e.target.name.length) - (e.target.name.indexOf(" ")+1));
 
	//выводим наглядное сообщение:
	trace("X был "+uint(lastX)+" стал "+e.target.x+"\nY был "+uint(lastY)+" стал "+e.target.y);
}
__________________
Все не так просто, как кажется... все гораздо проще...


Последний раз редактировалось Аллиас; 08.08.2009 в 14:44.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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