Просмотр полной версии : Вылет мыши за пределы флэшки.
DeliMIter
05.01.2003, 16:12
Неоднократно поднимался здесь вопрос, как проверить, находится ли мышка над областью флэш-плэйера (суть флэшки) или вылетела за пределы. И всегда давался бэмэ однозначный ответ, что средствами ТОЛЬКО флэша эту проблему решить нельзя. Среди наиболее частых ответов мелькал JS.
И вот свершилось!!!! В аттаче вы найдете флэшку, которая МОЖЕТ. Кто поймет, как она работает - тот удостоится БОНУСА!!! Естественно в виде алгоритма.
единственный работающий на 100% алгоритм - это прозрачная кнопка на весь экран поверх всего.
и это давно известно - ты не первопроходец.
имеет побочный эффект - нельзя юзать события других кнопок - onRollOver и т.п.
John Connor
05.01.2003, 16:43
эх... а я то уж понадеялся =))
Nox Noctis
05.01.2003, 16:52
мда... респект увидевшему это недоглюк-недофичу...
а ведь все так просто...
даже обидно...
...для пятерки можно сделать абсолютно то же самое,
но там пока не понятно как бороться с хэндКурсором,
который в пятерке так просто не выключить...
2BitSky
НЕТ ! тут все хитрее... там нет прозрачной кнопки на весь экран =)
так что с остальными кнопками все пучком =)
2ндглюк
и правильно надеялся =) в МХ решение чистенькое...
...ну, правда заглючить можно, если знать что именно глючить...
DeliMIter
05.01.2003, 16:58
2BitSky
Ты неправ :))) Загрузи флэш и проверь :)))
в принципе, если изначально планируешь, что в проекте понадобится определять местоположение мыши относительно флэшины, то нет ничего страшного,
просто не используешь rollOver-ы,
вместо них юзаешь hitTest и эмулируешь поведение кнопки мувиками... вот и всё.
- а с жабой заморачивается народ даже не для того, чтобы узнать: мыха над флэшом или нет, а для того чтобы знать и иметь возможность использования во флэше координат местоположения мыши, даже когда она за пределами ролика.
MasterAlien
05.01.2003, 17:13
2 Nox Noctis
Хе - хе !
В данном примере как раз использована КНОПКА НА ВЕСЬ ЭКРАН !!!!
в ней стоит код :
on (rollOver, rollOut, dragOver, dragOut)
{
_flag = true;
}
А в самом мувике :
function oEF()
{
D.text = _flag ? "inside" : "outside";
_flag = false;
T[0]._y = -1000;
T[0]._x = -1000;
T[1]._x = _soundbuftime;
T[1]._y = _quality;
T.unshift(T.pop());
} // End of the function
function onMouseMove()
{
_flag = true;
onEnterFrame = oEF;
delete("onMouseMove");
} // End of the function
function onMouseDown()
{
D.text = "mouse button is down";
onEnterFrame = oEF2;
} // End of the function
function onMouseUp()
{
onEnterFrame = oEF;
} // End of the function
T1.useHandCursor = false;
T2.useHandCursor = false;
T = [T1, T2];
Т.Е с помощью обычного
T1.useHandCursor = false;
T2.useHandCursor = false;
убирается курсор , отсутствие которого и привел некоторых людей , включая тебя в замешательство.
А сам способ - стар как мир , к томуже глючит ,если нажать ПРАВУЮ кнопку МЫШИ
Variable _level0.$version = "WIN 6,0,50,0"
Variable _level0.oEF = [function 'oEF']
Variable _level0.onMouseDown = [function 'onMouseDown']
Variable _level0.onMouseUp = [function 'onMouseUp']
Variable _level0.T = [object #4, class 'Array'] [
0:[movieclip:_level0.T1],
1:[movieclip:_level0.T2]
]
Variable _level0._flag = false
Variable _level0.onEnterFrame = [function 'oEF']
Edit Text: Target="_level0.D"
variable = null,
text = "outside",
htmlText = "outside",
html = false, textWidth = 283, textHeight = 36, maxChars = null,
borderColor = 0x000000, backgroundColor = 0xFFFFFF, textColor = 0x000000, border = false,
background = false, wordWrap = false, password = false, multiline = false,
selectable = false, scroll = 1, hscroll = 0, maxscroll = 1,
maxhscroll = 0, bottomScroll = 1,
type = "dynamic",
embedFonts = false, restrict = null, length = 7, tabIndex = undefined,
autoSize = "none",
condenseWhite = false
Button: Target="_level0.T1"
Variable _level0.T1.useHandCursor = false
Variable _level0.T1.tabIndex = [getter/setter] undefined
Button: Target="_level0.T2"
Variable _level0.T2.useHandCursor = false
Variable _level0.T2.tabIndex = [getter/setter] undefined
у меня нет на работе вьювера, но я посмотрел листинг добра твоего, ты не убедил меня насчет неиспользования событий кнопок в твоем решении.
убеди исходником...
а ... ну вот у человека есть вьювер
Nox Noctis
05.01.2003, 17:19
Оригинал написал(а) MasterAlien
2 Nox Noctis
Хе - хе !
...
убирается курсор , отсутствие которого и привел некоторых людей , включая тебя в замешательство.один совет можно ? =)
не надо считать себя умнее всех остальных =)))
там НЕТ кнопки на весь экран =)
Н Е Т У =)
а то, что вы не поняли что там происходит, даже вскрыв исходник - это ваши половые трудности =))) (без обид)
2Bitsky
этот способ работает засчет одной замечательной особенности кнопок......
...но об этой особенности пусть говорит сам автор, раз он не нее первым обратил внимание =)
DeliMIter
05.01.2003, 17:25
Еще раз для всех недоверчивых повторяю - сделайте кнопку на весь экран и посмотрите, что будет. Не стройте умозаключений, а сделайте. Потратьте пять минут времени. Потом вернетесь и расскажете.
Глюк с правой кнопкой мыши нашел Нокс, собственно если вы обратите внимание, то НИ ОДНА кнопка при открытом попап меню не работает как надо. Прабачайце калi ласка :)
Кодвьювер КОЕ-ГДЕ ошибся, и ошибся в конкретно ключевых местах.
да по барабану, что ты таскаешь кнопку под мышкой, что растягиваешь на весь экран - хрень та-же
- нормально события кнопок не работают
к тому же у тебя в исходнике лажа:
прозрачная кнопка (мувик) драгается левым верхним углом и поэтому мышь постоянно вылетает за ее пределы.
это незаметно когда снизу нет кнопки, которая реагирует на ролловер, но стоит положить - увидишь сам.
и решенье с драганьем кнопки хуже чем с кнопкой на весь экран: при том же результате больше нагрузка на проц. зачем это?
DeliMIter
05.01.2003, 17:49
2BitSky
Не слушаешь. Сделай по-своему, чтобы флэшка явно знала, когда мышь внутри, а когда снаружи и выложи. Не придирайся к мелочам :))) Все что ты говоришь справедливо, но решаемо.
[subway]design
05.01.2003, 18:23
1. DeliMIter'ский свф: наведите мышь и нажмите Tab.
2. Приведите хоть один жизненный пример, когда необходимо перманентно знать, где находится курсор - "в" или "вне".
DeliMIter
05.01.2003, 18:38
Пинг-Понг
Арканоид
...а так же любая другая игра, базирующаяся на управлении движением мыши.
2subway[design]
Пасиб, поправил ;))))
[subway]design
05.01.2003, 23:46
Пинг-понг? Фиг! Сейчас сам такой пишу - и без проверки прекрасно работает :)
DeliMIter
06.01.2003, 18:20
Напишешь - напиши мне, наступит моя очередь ГНОБИТЬ ;))))
2 DeliMIter Ты затронул важную (по крайней мере для меня чейчас ;) ) тему.
На мой взгляд,в больших проектах актуальны именно флэш-вставки а не полноэкранные мувики.
Тут и встаёт вопрос интеграции. Если интегрированный флэш является активным, т.е. взаимодействует с пользователем,
он должен грамотно реагировать на все такие события, в идеале предусмотренные Макромедией. Не важно, какое именно это событие,
скажу вот что: Если в Макромедии допустили такую недоработку, прийдётся искать способ её обойти нам. Существует ли панацея ???
Кстати, реальный пример трабла : http://www.flasher.ru/forum/showthread.php?threadid=41261
Блин! Может я туп, не фтыкаю я....Объясните новичку pls, вот MasterAlien повесил исходник. Не знаком я с _flag, ну ладно, назначение примерно понимаю. А как и чем вызываются функции типа
function onMouseMove()
{
_flag = true;
onEnterFrame = oEF;
delete("onMouseMove");
} // End of the function
function onMouseDown()
{
:confused:
DeliMIter
06.01.2003, 22:56
В эмыксе есть т.н. триггеры событий. Почитать про них можно в хелпе. onMouseMove ~ on (mouseMove).
gonzalez
10.02.2003, 22:51
богом тебя молю, нет всеми богами!!!!
:)
wrecker@mail.ee
:) :)
И мне тоже, будь любезен wsa@kursknet.ru
gonzalez
16.02.2003, 02:55
я вот одного не понимаю, жалко чтоли? :) Может ты на этом скрипте хочешь денег заработать?
Блин! Да скрипт уже весь тут раздели, осталось пару ошибок поправить.
llllllllll
12.03.2003, 17:36
А вот мне тут тоже понадобилось для самодельного курсора знать где мыша, честно говоря меня устраивает вариант с кнопкой на весь экран, ... гляньте мож у кого какие идеи еще проснутся, ... в принципе не отрабатывает( пока, что - влом делать =)) ситуацию с нажатой кнопкой, и с текстовыми полями (selectable) - но для курсора это мне и на руку ...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.