Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Назначение фокуса экземпляру класса (http://www.flasher.ru/forum/showthread.php?t=132886)

moskitos80 22.11.2009 19:06

Назначение фокуса экземпляру класса
 
Доброго времени суток, уважаемые. Подскажите пожалуйста, как назначить фокус на динамически создаваемый экземпляр объекта класса? У меня проблема в следующем:
При запуске приложения загружается главный класс игры, который загружает экз. класса заставки с двумя кнопками - одна из них "играть" при нажатии на ней главный класс удаляет заставку и загружает экземпляр класса "game", который в свою очередь загружает экз. класса главного героя, и экземпляр нужного уровня.
Теперь ситуация: при загрузке уровня пока не кликну по окну мышкой т.е. не дам ему фокус - герой не бегает. События нажатия кнопок навесил на stage класса героя (по другому не работает). К сожалению код предоставить не могу: он очень большой и в разных файлах. Имея предоставленную информацию кто нибудь сможет подсказать?

derhab 22.11.2009 19:16

по умолчанию после загрузки флэшка в браузере не имеет фокуса...пока не кликните по ней клавишные события не отрабатываются...

moskitos80 22.11.2009 19:30

А если игрушка запускается не в браузере, а сразу на компьютере?

SamFR 22.11.2009 20:23

Должно быть всё нормально.
В случае же запуска из-под браузера поможет использование SWFObject.

derhab 22.11.2009 23:27

Цитата:

Сообщение от SamFR (Сообщение 867500)
В случае же запуска из-под браузера поможет использование SWFObject.

что, внедренный через SWFObject ролик сразу получает фокус, так что обрабатываются клавишные события?

SamFR 23.11.2009 01:09

Такой код должен работать:

Код AS1/AS2:

<SCRIPT type=text/javascript>
 
        var objId = "flashContentId";
        var movieSize = {w:"550", h:"60"};
        var params = {menu: "false", allowNetworking: "all"};
 
        function setFocusOnFlash() {
                var flashObj = document.getElementById(objId);
                if (flashObj) flashObj.focus();
        }
 
        swfobject.embedSWF("movie.swf", objId, movieSize.w, movieSize.h, "9.0.0", false, false, params, false);
 
        if(swfobject.hasFlashPlayerVersion("9.0.0")) {
                swfobject.addDomLoadEvent(setFocusOnFlash);
        }
 
</SCRIPT>

Без SWFObject тоже можно, но чуть сложнее.

derhab 23.11.2009 01:28

проверяли?)

SamFR 23.11.2009 01:33

Да, и давно этим пользуюсь.

Единственная проблема состоит в том, что этот метод не работает для браузеров, основанных на WebKit, из-за глючного метода focus(). Глюк устранить обещаются давно, но пока никак.

Есть извращённые методы с callback-функциями, но уж очень они извращённы :) Если кто-то знает нормальный вариант – поделитесь, пожалуйста)

derhab 23.11.2009 01:48

Цитата:

Единственная проблема состоит в том, что этот метод не работает для браузеров, основанных на WebKit
ну вот и я помню что не во всех браузерах яваскриптовые решения этой проблемы работают...

SamFR 23.11.2009 01:58

другого, к сожалению, я не знаю, кроме того самого варианта с callback-функциями...
кому интересно: Fixing Firefox Flash Foolishness


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

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