![]() |
Вылет мыши за пределы флэшки.
Вложений: 1
Неоднократно поднимался здесь вопрос, как проверить, находится ли мышка над областью флэш-плэйера (суть флэшки) или вылетела за пределы. И всегда давался бэмэ однозначный ответ, что средствами ТОЛЬКО флэша эту проблему решить нельзя. Среди наиболее частых ответов мелькал JS.
И вот свершилось!!!! В аттаче вы найдете флэшку, которая МОЖЕТ. Кто поймет, как она работает - тот удостоится БОНУСА!!! Естественно в виде алгоритма. |
единственный работающий на 100% алгоритм - это прозрачная кнопка на весь экран поверх всего.
и это давно известно - ты не первопроходец. имеет побочный эффект - нельзя юзать события других кнопок - onRollOver и т.п. |
эх... а я то уж понадеялся =))
|
мда... респект увидевшему это недоглюк-недофичу...
а ведь все так просто... даже обидно... ...для пятерки можно сделать абсолютно то же самое, но там пока не понятно как бороться с хэндКурсором, который в пятерке так просто не выключить... 2BitSky НЕТ ! тут все хитрее... там нет прозрачной кнопки на весь экран =) так что с остальными кнопками все пучком =) 2ндглюк и правильно надеялся =) в МХ решение чистенькое... ...ну, правда заглючить можно, если знать что именно глючить... |
2BitSky
Ты неправ :))) Загрузи флэш и проверь :))) |
в принципе, если изначально планируешь, что в проекте понадобится определять местоположение мыши относительно флэшины, то нет ничего страшного,
просто не используешь rollOver-ы, вместо них юзаешь hitTest и эмулируешь поведение кнопки мувиками... вот и всё. - а с жабой заморачивается народ даже не для того, чтобы узнать: мыха над флэшом или нет, а для того чтобы знать и иметь возможность использования во флэше координат местоположения мыши, даже когда она за пределами ролика. |
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 у меня нет на работе вьювера, но я посмотрел листинг добра твоего, ты не убедил меня насчет неиспользования событий кнопок в твоем решении. убеди исходником... |
а ... ну вот у человека есть вьювер
|
Цитата:
не надо считать себя умнее всех остальных =))) там НЕТ кнопки на весь экран =) Н Е Т У =) а то, что вы не поняли что там происходит, даже вскрыв исходник - это ваши половые трудности =))) (без обид) 2Bitsky этот способ работает засчет одной замечательной особенности кнопок...... ...но об этой особенности пусть говорит сам автор, раз он не нее первым обратил внимание =) |
Еще раз для всех недоверчивых повторяю - сделайте кнопку на весь экран и посмотрите, что будет. Не стройте умозаключений, а сделайте. Потратьте пять минут времени. Потом вернетесь и расскажете.
Глюк с правой кнопкой мыши нашел Нокс, собственно если вы обратите внимание, то НИ ОДНА кнопка при открытом попап меню не работает как надо. Прабачайце калi ласка :) Кодвьювер КОЕ-ГДЕ ошибся, и ошибся в конкретно ключевых местах. |
да по барабану, что ты таскаешь кнопку под мышкой, что растягиваешь на весь экран - хрень та-же
- нормально события кнопок не работают |
к тому же у тебя в исходнике лажа:
прозрачная кнопка (мувик) драгается левым верхним углом и поэтому мышь постоянно вылетает за ее пределы. это незаметно когда снизу нет кнопки, которая реагирует на ролловер, но стоит положить - увидишь сам. и решенье с драганьем кнопки хуже чем с кнопкой на весь экран: при том же результате больше нагрузка на проц. зачем это? |
2BitSky
Не слушаешь. Сделай по-своему, чтобы флэшка явно знала, когда мышь внутри, а когда снаружи и выложи. Не придирайся к мелочам :))) Все что ты говоришь справедливо, но решаемо. |
1. DeliMIter'ский свф: наведите мышь и нажмите Tab.
2. Приведите хоть один жизненный пример, когда необходимо перманентно знать, где находится курсор - "в" или "вне". |
Пинг-Понг
Арканоид ...а так же любая другая игра, базирующаяся на управлении движением мыши. 2subway[design] Пасиб, поправил ;)))) |
Пинг-понг? Фиг! Сейчас сам такой пишу - и без проверки прекрасно работает :)
|
Напишешь - напиши мне, наступит моя очередь ГНОБИТЬ ;))))
|
2 DeliMIter Ты затронул важную (по крайней мере для меня чейчас ;) ) тему.
На мой взгляд,в больших проектах актуальны именно флэш-вставки а не полноэкранные мувики. Тут и встаёт вопрос интеграции. Если интегрированный флэш является активным, т.е. взаимодействует с пользователем, он должен грамотно реагировать на все такие события, в идеале предусмотренные Макромедией. Не важно, какое именно это событие, скажу вот что: Если в Макромедии допустили такую недоработку, прийдётся искать способ её обойти нам. Существует ли панацея ??? Кстати, реальный пример трабла : http://www.flasher.ru/forum/showthre...threadid=41261 |
чё-то не пойму...
Блин! Может я туп, не фтыкаю я....Объясните новичку pls, вот MasterAlien повесил исходник. Не знаком я с _flag, ну ладно, назначение примерно понимаю. А как и чем вызываются функции типа
function onMouseMove() { _flag = true; onEnterFrame = oEF; delete("onMouseMove"); } // End of the function function onMouseDown() { :confused: |
В эмыксе есть т.н. триггеры событий. Почитать про них можно в хелпе. onMouseMove ~ on (mouseMove).
|
а исходник дай плиииз!
|
:) :)
И мне тоже, будь любезен wsa@kursknet.ru |
я вот одного не понимаю, жалко чтоли? :) Может ты на этом скрипте хочешь денег заработать?
|
Блин! Да скрипт уже весь тут раздели, осталось пару ошибок поправить.
|
Вложений: 1
А вот мне тут тоже понадобилось для самодельного курсора знать где мыша, честно говоря меня устраивает вариант с кнопкой на весь экран, ... гляньте мож у кого какие идеи еще проснутся, ... в принципе не отрабатывает( пока, что - влом делать =)) ситуацию с нажатой кнопкой, и с текстовыми полями (selectable) - но для курсора это мне и на руку ...
|
| Часовой пояс GMT +4, время: 20:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.