Просмотр полной версии : Как узнать, что "залипло" на мышке?
orcpochta
20.10.2008, 17:13
Можно ли стандартными методами сделать проверку, есть ли в данный момент что-то на мышке, т.е. перетаскивается ли что-нибудь с помощью startDrag() и если перетаскивается, то что именно?
в случае если мало объектов, то можно проверить хиттестом к примеру ...
orcpochta
20.10.2008, 17:34
в случае если мало объектов, то можно проверить хиттестом к примеру ...
Это нестандартный метод..))
А учитывая, что приходится работать с множеством классов, то не хотелось бы в одних классах ссылаться на другие для осуществления такой проверки.
Можно, конечно, завести объект, в который при startDrag() будет передаваться состояние "занято" и, если надо, данные о том, что конкретно зависло на мыше, а при stopDrag() будет писаться состояние "свободно", и все остальные классы будут обращаться к этому объекту для проверки, но чисто для общего развития хотелось бы знать, есть ли какие-то "вшитые" методы?
стандартных методов нет..
можно переопределить 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);
}
orcpochta
20.10.2008, 18:20
стандартных методов нет..
можно переопределить 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);
- Не соображу, что здесь происходит...:wacko:
да ничего страшного не происходит: к вызвавшему мувику применяются нативные методы (startDrag/stopDrag ), но при этом еще сохраняется/обнуляется ссылка на него
orcpochta
20.10.2008, 18:59
да ничего страшного не происходит: к вызвавшему мувику применяются нативные методы (startDrag/stopDrag ), но при этом еще сохраняется/обнуляется ссылка на него
Можно в двух словах, что такое нативные методы, для чего исползуются и, если не сложно, ссылки на документацию?
Спасибо!)))
нативные в смысле родные, встроенные в плеер
доступ к ним возможен и как положено по документации (startDrag, напр.) и через недокументированную функцию ASnative()
чтобы сохранить родной функционал MovieClip.prototype.startDrag в новом определении как раз и нужен ASnative()
ps
предостережение:
подобные вещи работают и зачастую это очень удобно, но любое использование недокументированных фич (да и любых хаков) чревато непонятками ( и в общем-то считается дурным тоном у солидных кодеров), особенно если проект не сольный : кто-там чего напереопределял, поди потом разберись..
orcpochta
20.10.2008, 20:41
нативные в смысле родные, встроенные в плеер
доступ к ним возможен и как положено по документации (startDrag, напр.) и через недокументированную функцию ASnative()
чтобы сохранить родной функционал MovieClip.prototype.startDrag в новом определении как раз и нужен ASnative()
ps
предостережение:
подобные вещи работают и зачастую это очень удобно, но любое использование недокументированных фич (да и любых хаков) чревато непонятками ( и в общем-то считается дурным тоном у солидных кодеров), особенно если проект не сольный : кто-там чего напереопределял, поди потом разберись..
Т.е., вместо того, чтобы "ломать" класс MovieClip, можно сделать свой класс, расширяющий класс MovieClip, в котором переопределить startDrag()/stopDrag(), точнее, дописать их функционал к уже имеющемуся - можно ведь так?
ага, примерно так..
"примерно" потому, что легально дописать функционал к 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);
}
}
orcpochta
20.10.2008, 23:13
Ага, я про это и говорил...)) Еще этим не пользовался, но было ощущение, что точно про это читал...)))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.