Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   проблема со скроллингом колеса (http://www.flasher.ru/forum/showthread.php?t=112286)

DJ_Baton 23.05.2008 04:10

проблема со скроллингом колеса
 
Столкнулся с такой проблемой - есть флэш сайт, есть там поле с контентом и скроллингом и сам сайт в браузере тоже скроллируется стандартным скроллингом, так вот стоит потягать скроллинг как колесо тупо привязывается к области скроллирования и стандартный скроллинг браузера перестаёт реагировать на колесо мыши, кто знает как с помощью AS это пофиксить ?

iNils 23.05.2008 04:29

Вызвать javascript, котороый вернут фокус на html страницу

DJ_Baton 23.05.2008 06:27

хм не уловил идею, я в JS не особо шарю но если вы объясните принцип то я объясню программисту...
тут ещё одна идея в голове мелькала не знаю получится или нет - сделать работоспособность скрипта колеса мыши только если курсор мыши находится в поле скроллируемого во флэшине контента, если же нет тогда скрипт не пашет, только вот вернет ли это скроллирование всей страницы не знаю...

iNils 23.05.2008 08:20

События от колеса получает то приложение, которое имеет на себе фокус. По умолчанию, фокус находится на html странице и скролируется она. Когда вы кликнули по флешу, события начинает получать флеш, а не страница. Поэтому надо сместить фокус обратно. Если вы говорите о js программисте, то он должен знать как это делать.

DJ_Baton 23.05.2008 17:21

а как через AS сделать вызов яваскрипта ?

iNils 23.05.2008 17:28

Через класс 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

Цитата:

Сообщение от Psycho Tiger (Сообщение 741162)
Пффф... ты убрал мышку с 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();
        }
};

Что я пишу не так, помогите плиз, разве так сложно указать на ошибку ? :(

iNils 26.05.2008 01:02

Psycho Tiger верно сказал, в AS2 нет возможности отследить находится ли курсор в предлах флеша или за пределами.
То есть, когда мышь уходит за пределы флешки размером по ширине 900, то _root._xmouse будет в пределах 0-900.

DJ_Baton 26.05.2008 01:10

Да блин какой за пределами, всё это находится внутри флэшки, описана координатами область ВНУТРИ флэшки, забейте вы на это там всё верно меня интересует вопрос другой, как правильно запускать JS из флэша и где я допустил ошибку в скрипте запуска. Помогите плиз, все выходные продолбался так и не понял в чем ошибка (((

Wolsh 26.05.2008 01:42

а что, в джаваскрипте можно не писать 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


Часовой пояс GMT +4, время: 19:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.