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

Alexmody 17.01.2012 13:30

Установка фокуса на клип, при щелчке мыши на нем
 
Не совсем пойму принцип установления фокуса на объект при щелчке мыши.
Например, если у объекта стоит tabEnadled = true, то с помощью клавиши Tab мы перемещаемся и меняем фокус объектов. Если же мы кликаем на клип, то фокус на него не смещается, а мне необходимо при клике, чтобы фокус был на клипе, без использования программного метода (visual.stage.focus). Как включить клип в список объектов, чтобы при щелчке на нем останавливался фокус?

silin 17.01.2012 14:23

если установить объекту tabIndex ( при tabEnabled = true), то включается и установка фокуса по клику
по умолчанию (tabIndex=-1) фокус не перемещается
да, мутная какая-то логика

Добавлено через 8 минут
пардон, неправильно я нащелкал: tabIndex не при делах, при tabEnabled = true и так все работает

Добавлено через 23 минуты
упс, совсем непонятно все
такой вот пример: если не задавать явно tabEnabled, то он для спрайта false, при этом если задать tabIndex, то фокус начинает передаваться
а вот если явно задать tabEnabled, то уже никак :)
Код AS3:

public class Main extends Sprite
{
 
        public function Main():void
        {
                stage.scaleMode = StageScaleMode.NO_SCALE;
                addEventListener(MouseEvent.CLICK, click);
                for (var i:int = 0; i < 2; i++)
                {
                        addChild(getObj());
                }
        }
 
        private function click(e:MouseEvent):void
        {
                // tabEnabled=false, но фокус передается
                trace("e : " + e.target.name + " tabEnabled: " + e.target.tabEnabled);
                trace("stage.focus : " + (stage.focus ? stage.focus.name : "null"));
 
        }
        private var counter:int = 0;
 
        private function getObj():Sprite
        {
                var obj:Sprite = new Sprite();
                obj.x = 400 * Math.random();
                obj.y = 400 * Math.random();
                obj.graphics.beginFill(0);
                obj.graphics.drawCircle(0, 0, 20);
                // если явно выключить tabEnabled, то фокус не будет передаватьсяы
                //obj.tabEnabled = false;
                obj.tabIndex = 0;
                obj.name = "s" + counter++;
                return obj;
        }
}



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

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