Форум 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=129369)

Evgan 31.08.2009 12:49

скролинг колесом мышки флеша в браузре
 
доброго времени с уток
есть сайт
http://profikubixx.ru/
когда он только открылся колесо мышки работает, ежели мы нажмём на кокой-нибудь объект на флеше, то он перестаёт работать
опять он начинает работать если нажить на поле вне флеша

как это устранить? если возможно

благадарю

aFriend 31.08.2009 13:54

Как ни странно, но я сейчас тоже бьюсь с этой проблемой!
Вот тут можно посмотреть, как должно работать - http://ultra.samsung.ru/#x820

to_c 01.09.2009 00:46

Цитата:

Сообщение от Evgan (Сообщение 846970)
... ежели мы нажмём на кокой-нибудь объект на флеше, то он перестаёт работать ...

Может причина в фокусе?

etc 01.09.2009 07:50

Причина в подписке на мышь.

aFriend 01.09.2009 12:06

А что должно быть на неё подписано: мувик или html-файл?

etc 01.09.2009 18:17

Ни то, ни другое. Тогда будет работать скролл.

Evgan 01.09.2009 19:51

а как эту подписку выставлять?

aFriend 02.09.2009 00:48

А может правильнее спросить: как удалить?

aksios 02.09.2009 01:11

А можно спросить, зачем это нужно?

aFriend 02.09.2009 02:24

Читаем тему.

etc 02.09.2009 08:12

Цитата:

Сообщение от aFriend (Сообщение 847475)
А может правильнее спросить: как удалить?

Искать, где у вас в коде Mouse.addListener.

aFriend 02.09.2009 08:42

Ха! Так в том-то и дело, что его нет!

etc 02.09.2009 08:49

Компоненты тоже подписываются.

KiL33 02.09.2009 08:59

Цитата:

Компоненты тоже подписываются.
Я всё чаще и чаще замечаю, что компоненты малопригодны и мороки от них больше, нежели чем самому написать аналог нужного компонента. Благо возможность такая предоставляется.

Evgan 02.09.2009 11:47

я так понял у флеша и у браузера есть подписка на мыш, и когда мы активизиреум флеш (нажмём на что-нибудь), то флеш мыш "себе забирает" и колёсико мышки (ну и всё остальное) "принадлежит" флешу
причина ясна стала, спасибо
но как с этим бороться всё же не ясно

aFriend 02.09.2009 16:55

Да и etc говорит загадками ;-)

vikingcompany 02.09.2009 19:03

Цитата:

Сообщение от to_c (Сообщение 847203)
Может причина в фокусе?

Цитата:

Сообщение от etc (Сообщение 847231)
Причина в подписке на мышь.

Да нет, как раз в фокусе!

В вашем html пишите:
Код:

<SCRIPT LANGUAGE=JavaScript>
function setFocusToFlash ()
{
window.focus();
}
</SCRIPT>

А в AS создаём обработчик:
Код:

_root.onMouseDown = function()
{
ExternalInterface.call("setFocusToFlash");
}

И все дела.

etc 03.09.2009 07:56

Цитата:

Сообщение от vikingcompany (Сообщение 847665)
Да нет, как раз в фокусе!

Что «нет»? Фокус захватывается, если есть подписанные на мышь. Если нет, то всё скроллится нормально. Ваш код просто сбрасывает его.

aFriend 03.09.2009 13:25

Цитата:

Сообщение от etc (Сообщение 847795)
Ваш код просто сбрасывает его.

Ну так работает ведь! )))

Цитата:

Сообщение от etc (Сообщение 847795)
Фокус захватывается, если есть подписанные на мышь [компоненты]. Если нет, то всё скроллится нормально.

А если всё же нужны компоненты?

etc 03.09.2009 22:38

Цитата:

Сообщение от aFriend (Сообщение 847864)
А если всё же нужны компоненты?

Нужно ночью незаметно их поправить :quiet:

aFriend 04.09.2009 00:27

Цитата:

Сообщение от etc (Сообщение 848093)
Нужно ночью незаметно их поправить :quiet:

ППЦ. Небыло печали.

RenoVATio 04.09.2009 19:23

Цитата:

Сообщение от etc (Сообщение 848093)
Нужно ночью незаметно их поправить :quiet:

Скажите, это правда что компонеты если их встраивать весят больше, чем если бы создать их аналог самому???

vikingcompany 05.09.2009 00:04

Цитата:

Сообщение от etc (Сообщение 847795)
Ваш код просто сбрасывает его.

Цитата:

Сообщение от aFriend (Сообщение 847864)
Ну так работает ведь! )))

Справедливости ради должен заметить, что работает только в IE.
Согласно статистики, самым популярным браузером на территории русскоязычного Интернета является Opera.
Так вот под ней, к сожалению, не работает.
Связано это с тем, что Opera просто-напросто не обрабатывает window.focus();
Проблема не решена даже в последнем релизе 10.0 от 01.09.2009.

Цитата:

Сообщение от etc (Сообщение 847795)
Фокус захватывается, если есть подписанные на мышь [компоненты]. Если нет, то всё скроллится нормально.

Цитата:

Сообщение от aFriend (Сообщение 847864)
А если всё же нужны компоненты?

Цитата:

Сообщение от etc (Сообщение 848093)
Нужно ночью незаметно их поправить :quiet:

Всё куда проще - достаточно сделать матрёшку "мувик-в-мувике".
То есть подгрузить Ваш ролик в пустой *.swf, не содержащий компонентов.
К стати, это решает и проблему кросбраузерности.

А самое правильное решение - заранее продумать архитектуру проекта.
Например, использовать компоненты лишь во внешних роликах, избавив, таким образом, от них управляющий.

iNils 05.09.2009 00:24

Цитата:

Согласно статистики, самым популярным браузером на территории русскоязычного Интернета является Opera.
Чего чего?:D:D:D

aFriend 06.09.2009 02:07

Цитата:

Сообщение от vikingcompany (Сообщение 848425)
Всё куда проще - достаточно сделать матрёшку "мувик-в-мувике".

Я в шоке!!! Огромное спасибо. Теперь всё получилось.

to_c 09.09.2009 19:19

Скажите, а почему в разных браузерах сайт отображается по-разному?
В часности в IE даже при scale = 100% внизу видна белая html-полоса?

iNils 09.09.2009 19:38

Цитата:

Сообщение от to_c (Сообщение 849534)
Скажите, а почему в разных браузерах сайт отображается по-разному?
В часности в IE даже при scale = 100% внизу видна белая html-полоса?

Это вопрос к верстке, а не к флешу.

vikingcompany 11.09.2009 12:24

Цитата:

Сообщение от to_c (Сообщение 849534)
... при scale = 100% внизу видна белая html-полоса?

Задай мувику параметр aling = 'middle'. После этого полоса твоя должна немножко усредниться.

aFriend 12.09.2009 00:35

Скажите, а можно ли программно проскролить страницу до определённого уровня?

to_c 14.09.2009 03:24

Цитата:

Сообщение от aFriend (Сообщение 850200)
Скажите, а можно ли программно проскролить страницу до определённого уровня?

В голом html так делается, знаю точно. А вот как - не подскажу.

Цитата:

Сообщение от vikingcompany (Сообщение 848425)
Всё куда проще - достаточно сделать матрёшку "мувик-в-мувике".
То есть подгрузить Ваш ролик в пустой *.swf, не содержащий компонентов.

У меня это работает только с button. А вот с Tree - не хочет! Я так понимаю, это потому что она "скроллсодержащая"?
vScrollPolicy и hScrollPolicy отключил - не помогает.
etс, вы упоминали о необходимости править компоненты. Расскажите пожалуйста, как это сделать.

etc 14.09.2009 10:52

Цитата:

Сообщение от to_c (Сообщение 850554)
etс, вы упоминали о необходимости править компоненты. Расскажите пожалуйста, как это сделать.

Где-то были раньше мануалы. Суть в том, что во флеше они уже в скомпилированном виде, но исходники присутствуют. Впрочем, я думаю, достаточно открыть папку Classes флеша и там поправить то, что нужно.

to_c 15.09.2009 01:48

Цитата:

Сообщение от etc (Сообщение 850597)
... думаю, достаточно открыть папку Classes флеша и там поправить то, что нужно.

Вы имеете ввиду C:\Program Files\Adobe Flash CS4\Common\First Run\Classes?
Заглядывал туда. Но ничего там и близко нет о Tree.

Зато в папке C:\Program Files\Adobe Flash CS4\Common\Configuration\Components\User Interface
нашёл файлик Tree.swc
Если его убрать, компонент Tree со вкладки components исчезает.
Может это оно?

vikingcompany 16.09.2009 02:43

Цитата:

Сообщение от etc (Сообщение 850597)
Где-то были раньше мануалы.

Они и сейчас есть - на www.adobe.com. Можно так же использовать горячую клавишу F1.

to_c 16.09.2009 15:48

Вот, нашёл кое-что - http://livedocs.adobe.com/flash/9.0/...html#wp1177424

Хотя в моём случае вопрос стоит несколько по-другому - как ИЗМЕНИТЬ СУЩЕСТВУЮЩИЙ компонент?

KiL33 16.09.2009 15:52

никак

to_c 16.09.2009 17:01

О чём же тогда говорил etc?

aFriend 18.09.2009 03:01

А он всё время говорит загадками. Это я давно заметил.

vikingcompany 19.09.2009 03:58

Цитата:

Сообщение от to_c (Сообщение 850858)
Вы имеете ввиду C:\Program Files\Adobe Flash CS4\Common\First Run\Classes?

Смотри C:\Program Files\Adobe\Adobe Flash CS4\Common\First Run\Classes\mx\controls

to_c 21.09.2009 13:35

Вложений: 1
Спасибо, нашёл.

Воспользовавший этой статьёй, я разобрался с написанием собственных компонентов и их структурой.

Компонент Tree построен на базе (с применением) компонента List, что видно из файла Tree.as:
Код:

import mx.controls.List;
Помещённый на сцену, List уже сам по себе перехватывает фокус, из-за чего страничка не скролится.
Разобрав List.as вижу импорт другого класса - ScrollSelectList:
Код:

import mx.controls.listclasses.ScrollSelectList;
Тогда, на базе List, я создаю свой собственный компонент dial (по аналогии с всё той же статьёй)
и начинаю его исследовать, построчно удаляя код классов.
Цель - найти строки, отвечающие за скрол.

В итоге:
удалив всё, что только можно, получил абсолютно пустой компонент
и абсолютно неинформативные классы.

Вместе с тем, помещённый на сцену, этот обрубок ВСЁ ТАК ЖЕ перехватывает скролл на себя!
В этом можно убедиться, посмотрев мой код.
В библиотеке делаем правой клавишей по компоненту -> Convert to compiled clip и помещае на сцену. Тестирую под Apache 2.2.13

Уважаемый etc!
Как видите, кодифкация компонента не принесла должного результата.
Подскажите - в чём тогда соль?

vikingcompany 22.09.2009 02:13

Мой любимый компонент = ) Намучаешься ещё с ним.


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

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