Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не обрабатывается KeyboardEvent.KEY_DOWN (http://www.flasher.ru/forum/showthread.php?t=136169)

il phoenix 11.02.2010 12:13

не обрабатывается KeyboardEvent.KEY_DOWN
 
вот такой вот простенький класс Main
если нажать на любую кнопку, то происходит инкремент числа в правом верхнем углу
если нажать мышкой на красный квадрат, то он исчезнет и пока не кликнешь на флешку, событие KeyboardEvent.KEY_DOWN не срабатывает

подскажите пожалуйста как победить?

Код AS3:

import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.events.MouseEvent;
        import flash.text.TextField;
 
        /**
        * ...
        * @author Ilyes Garifullin
        */

        public class Main extends Sprite
        {
 
                private var txt:TextField;
 
                public function Main():void
                {
                        if (stage) onAdded();
                        else addEventListener(Event.ADDED_TO_STAGE, onAdded);
                }
 
                private function onAdded(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
 
                        txt = new TextField();
                        txt.text = "0";
                        addChild(txt);
 
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
 
                        var spr:Sprite = new Sprite();
                        spr.buttonMode = true;
                        spr.graphics.beginFill(0xFF0000);
                        spr.graphics.drawRect(0, 0, 100, 100);
                        spr.x = 100;
                        spr.y = 100;
                        spr.addEventListener(MouseEvent.CLICK, onSprClick);
                        addChild(spr);
                }
 
                private function onSprClick(e:Event = null):void
                {
                        var spr:Sprite = e.target as Sprite;
                        removeChild(spr);
                }
 
                private function onKeyDown(e:Event = null):void
                {
                        var i:int = parseInt(txt.text);
                        i++;
                        txt.text = i.toString();
                }
 
        }


Zik. 11.02.2010 12:35

Я как полагаю
Код AS3:

private function onSprClick(e:Event = null):void 
                {
                        var spr:Sprite = e.target as Sprite;
                        removeChild(spr);
                                  stage.focus = stage
                }


il phoenix 11.02.2010 12:37

супер! Спасибо огромное

krolser 01.10.2010 16:03

Спасибо. У меня тоже похожая ситуация. И мне тоже помогло.

Но можно более детально объяснить, почему так получилось.
Неужели из за того, что мы удалили со stage объект, который был в фокусе?


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

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