Просмотр полной версии : Установка фокуса на клип, при щелчке мыши на нем
Alexmody
17.01.2012, 13:30
Не совсем пойму принцип установления фокуса на объект при щелчке мыши.
Например, если у объекта стоит tabEnadled = true, то с помощью клавиши Tab мы перемещаемся и меняем фокус объектов. Если же мы кликаем на клип, то фокус на него не смещается, а мне необходимо при клике, чтобы фокус был на клипе, без использования программного метода (visual.stage.focus). Как включить клип в список объектов, чтобы при щелчке на нем останавливался фокус?
если установить объекту tabIndex ( при tabEnabled = true), то включается и установка фокуса по клику
по умолчанию (tabIndex=-1) фокус не перемещается
да, мутная какая-то логика
Добавлено через 8 минут
пардон, неправильно я нащелкал: tabIndex не при делах, при tabEnabled = true и так все работает
Добавлено через 23 минуты
упс, совсем непонятно все
такой вот пример: если не задавать явно tabEnabled, то он для спрайта false, при этом если задать tabIndex, то фокус начинает передаваться
а вот если явно задать tabEnabled, то уже никак :)
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;
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.