Просмотр полной версии : проблема со скроллингом колеса
DJ_Baton
23.05.2008, 04:10
Столкнулся с такой проблемой - есть флэш сайт, есть там поле с контентом и скроллингом и сам сайт в браузере тоже скроллируется стандартным скроллингом, так вот стоит потягать скроллинг как колесо тупо привязывается к области скроллирования и стандартный скроллинг браузера перестаёт реагировать на колесо мыши, кто знает как с помощью AS это пофиксить ?
Вызвать javascript, котороый вернут фокус на html страницу
DJ_Baton
23.05.2008, 06:27
хм не уловил идею, я в JS не особо шарю но если вы объясните принцип то я объясню программисту...
тут ещё одна идея в голове мелькала не знаю получится или нет - сделать работоспособность скрипта колеса мыши только если курсор мыши находится в поле скроллируемого во флэшине контента, если же нет тогда скрипт не пашет, только вот вернет ли это скроллирование всей страницы не знаю...
События от колеса получает то приложение, которое имеет на себе фокус. По умолчанию, фокус находится на html странице и скролируется она. Когда вы кликнули по флешу, события начинает получать флеш, а не страница. Поэтому надо сместить фокус обратно. Если вы говорите о js программисте, то он должен знать как это делать.
DJ_Baton
23.05.2008, 17:21
а как через AS сделать вызов яваскрипта ?
Через класс flash.external.ExternalInterface
DJ_Baton
23.05.2008, 20:27
Апдейт:
onEnterFrame = function () {
mask_mc.onDragOut = function() {
flash.external.ExternalInterface.call("myFocus");
};
};
правильно ?
вот JS в хеде:
<script>
myFocus() { window.focus() }
</script>
АПДЕЙТ вот вроде правильный скрипт проверяющий наличие курсора мыши в поле контента, только вызов функции я помоему неправильно написал
onEnterFrame = function () {
if ((_root._xmouse>310 && _root._xmouse<900) || (_root._ymouse<427 && _root._ymouse>702)) {
trace("мы внутри контента");
} else {
trace("мы вне контента");
flash.external.ExternalInterface.call("myFocus");
}
};
Psycho Tiger
24.05.2008, 12:30
Пффф... ты убрал мышку с flash ролика. Что будет возвращать _xmouse и _ymouse?
Напомню, что flash - безобидейшее существо, получить _xmouse и _ymouse он НЕ может, когда мышка находиться вне флэш ролика (исключение баг с dragOut`ом из флэш ролика).
Вывод: тот код, что ты написал выше нужно переделать под js, то есть вызвать его из js`a.
DJ_Baton
24.05.2008, 20:20
Пффф... ты убрал мышку с flash ролика. Что будет возвращать _xmouse и _ymouse?
Напомню, что flash - безобидейшее существо, получить _xmouse и _ymouse он НЕ может, когда мышка находиться вне флэш ролика (исключение баг с dragOut`ом из флэш ролика).
Вывод: тот код, что ты написал выше нужно переделать под js, то есть вызвать его из js`a.
с какого я это флэш ролика убрал ? ))))) С чего это ты вообще взял ? У меня весь сайт на флэше и проверку он делает исключительно на нахождение в поле скроллируемого контента и должен возвращать фокус сайту когда мышка уходит из скроллируемого поля
DJ_Baton
26.05.2008, 00:58
Попытаюсь ещё раз внятно описать проблему...
Есть поле с определенными координатами - это область в которой во флэшке скроллируется контент, я описал эту область в скрипте, исходя из trace-а она описана верно и работает верно и к ней не возвращаемся, вопрос у меня только 1 - как правильно запускать JS функцию ?
Вот мой скрипт...
import flash.external.ExternalInterface;
F_myFocus = function (col) {
ExternalInterface.call("myFocus", col);
};
onEnterFrame = function () {
if ((_root._xmouse>310 && _root._xmouse<900) || (_root._ymouse<427 && _root._ymouse>702)) {
trace("мы внутри контента");
} else {
trace("мы вне контента");
F_myFocus();
}
};
Что я пишу не так, помогите плиз, разве так сложно указать на ошибку ? :(
Psycho Tiger верно сказал, в AS2 нет возможности отследить находится ли курсор в предлах флеша или за пределами.
То есть, когда мышь уходит за пределы флешки размером по ширине 900, то _root._xmouse будет в пределах 0-900.
DJ_Baton
26.05.2008, 01:10
Да блин какой за пределами, всё это находится внутри флэшки, описана координатами область ВНУТРИ флэшки, забейте вы на это там всё верно меня интересует вопрос другой, как правильно запускать JS из флэша и где я допустил ошибку в скрипте запуска. Помогите плиз, все выходные продолбался так и не понял в чем ошибка (((
а что, в джаваскрипте можно не писать function перед функцией?
И зачем у Вас "или" в условии? Или по иксу попали, или по игреку - находимся в контенте? Наверно И по иксу попали, И по игреку?
т.е. везде && должен быть.
DJ_Baton
26.05.2008, 02:09
да, вы правы на счёт или... вот сделал наглядный пример:
http://djb.at.ua/flashtest.html
он четко показывает структуру моей флэшки, смысл - срабатывание функции яваскрипта когда мы вне контента, вот скрипт:
onEnterFrame = function () {
xm = _root._xmouse;
ym = _root._ymouse;
if (xm<900 && xm>310 && ym>427 && ym<702) {
text = "мы внутри контента";
} else {
text = "мы вне контента";
//тут должен сработать яваскрипт возвращения фокуса
}
};
xm и ym соответственно 2 динамических текста которые снимают показатели координат в моей флэшке (для наглядности)...
Вот JS в коде сайта:
<script>
myFocus() { window.focus() }
</script>
Wolsh, если не трудно объясни дураку как вызвать функцию myFocus экшенскриптом, а то я совсем запутался, помоги плиз ((
как я понял JS правильно должен выглядеть так:
<script type="text/javascript" language="javascript">
function myFocus() { window.focus() }
</script>
я просто в JS не особо шарю, мой программер писал
АПДЕЙТ !!! После правки JS и пары тестов всё заработало !!!!!!! Спасибо вам огромное мужики !!!!
один минус - постоянно обрабатываемая функция возврата фокуса не позволяет выделить урл сайта
как сделать запрос чтобы если функция активна скрипт перестал её обрабатывать ? т.е. если функция myFocus уже запущена
всё, закончил наконец скроллинг, просто привязал скрипт к мувику а запуск функции засунул в него может не очень гламурно реализовал за-то всё работает, ещё раз всем большое спасибо за помощь и сорри за флуд
DJ_Baton
28.05.2008, 04:09
вот как говорится вроде было всё нормально но тут снова пошли глюки... казало сь бы функция JS
<script type="text/javascript" language="javascript">
function myFocus() { window.focus() }
</script>
Является глобальной для всех браузеров, и тут начинается самое интересное:
Флэшка сбрасывает фокус в IE и FF, но в опере в упор отказывается сбрасывать фокус, исходя из того что в первых двух браузерах всё работает следовательно из флэша JS вызывается нормально, ну и сам JS вроде как глобален для всех браузеров, почему в опере не хочет не понимаю...
Вот посмотрите пожалуйста пример: http://hotelrus.com.ua/test/test.html
Может у меня просто опера кривая ? а то попахивает это всё какой-то парадоксальностью, что опера window.focus() не может вызвать
Исходник тут:http://hotelrus.com.ua/test/test.rar
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.