Просмотр полной версии : OnRollOut со всей флэшки
Вечер добрый!
Подскажите пожалуйста как отловить то что курсор, ушел за границы флэшки? В поиске искал по запросам "фокус" ничего подобного найти не смог к сожалению.
Суть такая, когда во флэшке подводишь мышь к краям содержимое всей флэшки перемещается (скролл карты). Когда же мышку отводишь с флэшки, курсор как бы остается у края флэшки, и карта продолжает передвигаться.
Спасибо!
В AS2 это никак. Может разве что с помощью надстройки в виде JS-функции. Либо активные области у краев сцены подрезать пикселей на 20.
В AS3 есть событие MOUSE_LEAVE, которое этот пробел закрыло.
Возможно, если верхним слоем во флэшке лежит кнопка, полностью закрывающая сцену. Тогда onRollOut сработает, но будут проблемы с событиями других кнопок.
Я конечно дико извиняюсь, но вот такой примерчик - не то, что хотелось?
На примере драга. Суть движений в изначальной задаче, сами понимаете, не очень ясна :)
BACKGAL.onMouseMove = function()
{
if( _xmouse < 10 || _xmouse > Stage.width-10 || _ymouse < 10 || _ymouse > Stage.height- 10 )
{
MAP.stopDrag()
}
updateAfterEvent()
}
BACKGAL.onPress = function(){
MAP.startDrag()
}
BACKGAL.onRelease = BACKGAL.onReleaseOutside = function(){
MAP.stopDrag()
}
Хм. Как-то и внимания не обратил. А ведь dark256 ближе к истине :)
Отнюдь.
У автора не драг, с драгом-то все просто и однозачно.
У него автоматом скроллинг происходит, когда по карте мышь двигается.
Недавно такой проект на AS2 делал, так в конце концов пришлось на драг переделать, хотя был промежуточный вариант с неактивными полосками у краев сцены.
Тогда, вероятно, можно решить кнопками, расположеными по краям флэшки.
Вот так, например: 25959
Тогда, вероятно, можно решить кнопками, расположеными по краям флэшки.
Да, такой вариант в моем проекте был предпоследним, от него и отказались - ненадежно, не всегда отлавливалось событие. Разрыв-то должен быть, чтобы RollOut сработал, а ширины разрыва м/у кнопкой-полоской и краем сцены не всегда хватало, мышь быстрее иногда проходила и событие не происходило.
С hitTest то же самое.
1. JS надстройку + команду во флешку (с помощью ExternalInterface), что с нее ушли (надежно).
2. Кнопки-полоски по бокам и разрывы м/у ними и краями сцены (ненадежно).
3. Переписать на AS3 (нереально?).
4. Ввести драг (не так задумывалось).
хм. но .onMouseMove ведь живет и здравствует?
хоть на энтерФрэйм повесить.
Честно говоря уже слышал про проблемы с уходм мышки, но как-то у самого ни разу не возникало проблемы.
От автора, однако, пример надобен, где там у него что не работает. Чтобы скроллируемый клип стопнуть, там есть 1001 вариант :)
dark, кажется нет их там, 1001-го варианта, кроме 4-х мной приведенных, будет интересно, если кто-то альтернтаивное решение подскажет.
Мои примеры:
Вот такое решение было (http://www.21rest.ru/test/usadba/gp/genplan.htm).
Перед этим карта тоже скроллилась не при наведении на края, как по этой ссылке, а при любом проходе мыши (как раз onMouseMove был), в зависимости от ее положения. Однако вылезли такие же грабли, как у автора.
Пришлось сперва сделать как по ссылке выше, а потом и вовсе сделать драг (http://kazanusadba.ru/flash/genplan/genplan.htm), поскольку при маленьком окне области с кнопками начинали неудобно накладываться.
ох же ж ты какая вещь!!!!!
ух!!!! крутотень!!!! эх... делают же люди большие серьезные красивые вещи!!!
А я как..... /цензоред/ :(
Кстати, пошлый вопрос, карта на АС3 написана?
Если на АС2 - то как ты там сделал что по onPress onRelease в случае ДРАГА не вызывается процедура если прсто кликнуть. Координаты сравнивал?
А по теме.... Мммм...... Лень щас рыться. Где-то есть несколько карт сделанных по-разному.
Лень искать. При случае, позжее.
Кстати, пошлый вопрос, карта на АС3 написана?
Если на АС2 - то как ты там сделал что по onPress onRelease в случае ДРАГА не вызывается процедура если прсто кликнуть. Координаты сравнивал?
Спасибо. AS2. Ага, попал в точку - проверка на наличие смещения после отпускания мыши. :) Правда подразумевается некий абстрактный случай с точным попаданием в ту же точку после некой траектории, но я им пренебрег. :rolleyes:
Хотя сейчас во втором варианте вообще не прописаны действия на onRelease, я то ли вроде как в теле функции забыл прописать getURL'ы, поскольку концепция линков поменялась, то ли люди в конфиге url-ы не прописали. Хотя действия были при проверке назначены, и вообще работало - драг отдельно, onRelease отдельно.
Ясно :) А я сидел, ваял код и чуствовал себя утупком, ибо думал что все это наверняка как-то аутентичнее можно сделать :))))
Кстати, а рисунок карты и домиков - тоже твое, или предоставили?
Хотя работа наверное была адова - все эти контуры активных зон врисовывать...
Или там отдельные картинки, как мозаика?
Я тут карту земного шара 4 дня ваял, 170 стран - 170 клипов.... убиться можно.
Чуствовал себе миниГуглоМапером :)))))))
Хотя работа наверное была адова - все эти контуры активных зон врисовывать...
Это было САМОЕ простое, быстрое в проекте и не требующее внимания, прошло под параллельный просмотр кинофильма.
Предоставили PSD в слоях, как обычно, затем экспорт в IDE с созданием мувиков и сведением некоторых в единые растры.
Но при этом не учли тени, то есть то, что при сортировке по видимости соседние домики могут быть из разных типов (т.е. принадлежать разным слоям). Ладно хоть тени оказались одинаковыми и у нормальных домов и у призраков, и не возникло артефактов.
mooncar, отличная работа! Дизайнер тоже хорошо постарался:)
Если по теме, то, что, если написать класс, который определяет уход мышки из области флэшки? Чтобы он с помощью ExternalInterface добавлял необходимый JavaScript-код на страницу, который, в свою очередь, работал бы, как вы описываете? В простом случае можно исключить случаи, когда одна и та же флэшка вставлена на страницу несколько раз (несколько экземпляров).
Идея в том, чтобы по-возможности минимально "влезать" в хтмл-код. Прописали с помощью SWFObject флэшку и она уже самостоятельно справляется.
Спасибо, Hauts.
Смотри.
Я обычно публикую через SWFObject с помощью двух вложенных контейнеров - один для внедрения, на него заменится флешка, и внешний, чисто для удобства и наглядности верстки.
Например:
<script language="javascript" type="text/javascript">
var flashvars = false;
var params = { menu: "false", allowScriptAccess: "always", allowFullScreen: "false", quality: "high", wmode: "transparent" };
var attributes = { id:"top_obj"};
swfobject.embedSWF("flash/top.swf", "top", "1000", "444", "9.0.0", "flash/expressInstall.swf", flashvars, params, attributes);
</script>
.
.
.
<div id="headercont" style="width:1000px; height:444px">
<div id="top">top</div>
</div>
Останется только написать простую функцию, которая бы передавала с помощью ExternalInterface команду флешке о том, что мышь ушла с нужной области и повесить эту функцию на событие onmouseout внешнего контейнера (в моем случае это блок headercont).
Что-то это простейшее решение мне раньше в голову не пришло, я его привожу только сейчас при ответе топикстартеру.
PS. На самом деле идея "минимального влезания" в HTML не должна быть самоцелью. Нужно гибко подходить к разработке, имхо.
И смотреть накладные затраты, в первую оч. - время на разработку. Если другой путь слишком сложен или не надежен, то по прошествии некоторого времени я, например, сделаю надстройку в HTML и документирую её для интеграторов.
PPS. Хотя класс конечно интересно было бы написать.
mooncar, посмотрите.
25969
Думаю вам будет понятна идея, хоть и сырая реализация. В js плохо ориентируюсь. Работает в хроме.
Спасибо, посмотрю! Правда я с JS довольно сильно напрягаюсь :)
PS. А почему в IE-то не работает?
В IE не работает из-за того, что не могу толково подцепить к контейнеру onmouseout. JavaScript`овые сайты нужно изучать...
Psycho Tiger
09.02.2011, 18:50
mooncar, шикарно!
Подскажи, пожалуйста, где такая прелесть и как такой домик купить?
mooncar, шикарно!
Подскажи, пожалуйста, где такая прелесть и как такой домик купить?
Спасибо, конечно. Тут 3D-визуализаторов заслуга немалая на самом деле. Этот план же изначально в 3D был.
Вот только что-то автора топика не видать, а я тут для иллюстрации означенных им проблем привел примеры решений, но получилось что-то вроде презентации этого проекта :) (Можно сократить последнюю ссылку до домена - будет главная страница поселка - банальный параллакс).
Эээ.. а приобрести - это всё близко к местам моего проживания (см. профиль).
Спасибо! карта крутая))
Надо видимо как то через JS делать
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.