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

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

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

Регистрация: Feb 2008
Сообщений: 890
По умолчанию Как узнать, что "залипло" на мышке?

Можно ли стандартными методами сделать проверку, есть ли в данный момент что-то на мышке, т.е. перетаскивается ли что-нибудь с помощью startDrag() и если перетаскивается, то что именно?
__________________
скриптограф

Старый 20.10.2008, 17:17
skald вне форума Посмотреть профиль Отправить личное сообщение для skald Найти все сообщения от skald
  № 2  
Ответить с цитированием
skald
[+4 12.09.08]

Регистрация: Oct 2002
Адрес: SPb
Сообщений: 151
Отправить сообщение для skald с помощью ICQ
в случае если мало объектов, то можно проверить хиттестом к примеру ...

Старый 20.10.2008, 17:34
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 3  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от skald Посмотреть сообщение
в случае если мало объектов, то можно проверить хиттестом к примеру ...
Это нестандартный метод..))

А учитывая, что приходится работать с множеством классов, то не хотелось бы в одних классах ссылаться на другие для осуществления такой проверки.
Можно, конечно, завести объект, в который при startDrag() будет передаваться состояние "занято" и, если надо, данные о том, что конкретно зависло на мыше, а при stopDrag() будет писаться состояние "свободно", и все остальные классы будут обращаться к этому объекту для проверки, но чисто для общего развития хотелось бы знать, есть ли какие-то "вшитые" методы?
__________________
скриптограф


Последний раз редактировалось orcpochta; 20.10.2008 в 17:41.
Старый 20.10.2008, 18:12
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
стандартных методов нет..
можно переопределить startDrag/stopDrag, с тем чтобы хранить текущий таскаемый мувик в _global.currentDrag, например:
Код:
MovieClip.prototype.startDrag = function() {
	_global.currentDrag = this;
	ASnative(900, 20).apply(this,arguments);
	
}

MovieClip.prototype.stopDrag = function() {
	_global.currentDrag = undefined;
	ASnative(900, 21).apply(null);
}
//посмотреть
function onEnterFrame(){
	trace(currentDrag);
}

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

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от silin Посмотреть сообщение
стандартных методов нет..
можно переопределить startDrag/stopDrag, с тем чтобы хранить текущий таскаемый мувик в _global.currentDrag, например:
Код:
MovieClip.prototype.startDrag = function() {
	_global.currentDrag = this;
	ASnative(900, 20).apply(this,arguments);
	
}

MovieClip.prototype.stopDrag = function() {
	_global.currentDrag = undefined;
	ASnative(900, 21).apply(null);
}
//посмотреть
function onEnterFrame(){
	trace(currentDrag);
}
Код:
ASnative(900, 20).apply(this,arguments);
и
ASnative(900, 21).apply(null);
- Не соображу, что здесь происходит...
__________________
скриптограф

Старый 20.10.2008, 18:40
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
да ничего страшного не происходит: к вызвавшему мувику применяются нативные методы (startDrag/stopDrag ), но при этом еще сохраняется/обнуляется ссылка на него

Старый 20.10.2008, 18:59
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 7  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от silin Посмотреть сообщение
да ничего страшного не происходит: к вызвавшему мувику применяются нативные методы (startDrag/stopDrag ), но при этом еще сохраняется/обнуляется ссылка на него
Можно в двух словах, что такое нативные методы, для чего исползуются и, если не сложно, ссылки на документацию?

Спасибо!)))
__________________
скриптограф

Старый 20.10.2008, 19:26
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
нативные в смысле родные, встроенные в плеер
доступ к ним возможен и как положено по документации (startDrag, напр.) и через недокументированную функцию ASnative()
чтобы сохранить родной функционал MovieClip.prototype.startDrag в новом определении как раз и нужен ASnative()

ps
предостережение:
подобные вещи работают и зачастую это очень удобно, но любое использование недокументированных фич (да и любых хаков) чревато непонятками ( и в общем-то считается дурным тоном у солидных кодеров), особенно если проект не сольный : кто-там чего напереопределял, поди потом разберись..


Последний раз редактировалось silin; 20.10.2008 в 19:34.
Старый 20.10.2008, 20:41
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 9  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от silin Посмотреть сообщение
нативные в смысле родные, встроенные в плеер
доступ к ним возможен и как положено по документации (startDrag, напр.) и через недокументированную функцию ASnative()
чтобы сохранить родной функционал MovieClip.prototype.startDrag в новом определении как раз и нужен ASnative()

ps
предостережение:
подобные вещи работают и зачастую это очень удобно, но любое использование недокументированных фич (да и любых хаков) чревато непонятками ( и в общем-то считается дурным тоном у солидных кодеров), особенно если проект не сольный : кто-там чего напереопределял, поди потом разберись..

Т.е., вместо того, чтобы "ломать" класс MovieClip, можно сделать свой класс, расширяющий класс MovieClip, в котором переопределить startDrag()/stopDrag(), точнее, дописать их функционал к уже имеющемуся - можно ведь так?
__________________
скриптограф

Старый 20.10.2008, 20:57
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ага, примерно так..
"примерно" потому, что легально дописать функционал к startDrag()/stopDrag() в классе все равно не получится, но никто не мешает предусмотреть в нем сохранение ссылки на таскаемой мувик во всех ситуациях, связанных со startDrag() и т.п.
UPD:
сори, погорячился,
в классе получится и 'легально'
Код:
class MyMC extends MovieClip
{
	static var currentDrag:MyMC;
	
	function startDrag() {
		currentDrag = this;
		super.startDrag.apply(this, arguments);
	}
	function stopDrag() {
		currentDrag = null;
		super.stopDrag.apply(this);
	}
}


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

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

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


 


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


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