TabEnable,TabChildren=False将有条件地阻止FocusIn事件的发生

有两种操作将发出【FocusEvent.FOCUS_IN】事件:

1. Tab键盘操作

2. 鼠标点击


TabChildren:确定对象的子项是否支持 Tab 键。

当TabChildren=False的时候,Tab键盘操作将不会进入子项。

与此同时,TabChildren还影响鼠标点击触发的【FocusEvent.FOCUS_IN】事件。


通过例子来理解:

例子1:  鼠标点击能够触发【FocusEvent.FOCUS_IN】事件的例子。

package {
	import flash.display.Sprite;
	import flash.events.FocusEvent;
	
	public class test extends Sprite {
		
		public function test() {
			var child:Sprite = new CustomSprite();
			addChild(child);
			this.addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
			this.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
			this.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
			this.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
			
			//这句话是重点
			this.tabChildren=false;
		}
		
		
		private function focusInHandler(event:FocusEvent):void {
			trace("focusInHandler: ");
		}
		
		private function focusOutHandler(event:FocusEvent):void {
			trace("focusOutHandler: ");
		}
		
		private function keyFocusChangeHandler(event:FocusEvent):void {
			trace("keyFocusChangeHandler: ");
		}
		private function mouseFocusChangeHandler(event:FocusEvent):void {
			trace("mouseFocusChangeHandler: ");
		}
	}
}

import flash.display.Sprite;
import flash.events.MouseEvent;

class CustomSprite extends Sprite {
	private var size:uint = 50;
	private var bgColor:uint = 0x00CCFF;
	
	public function CustomSprite() {
		buttonMode = true;
		addEventListener(MouseEvent.CLICK, clickHandler);
		draw(size, size);
	}
	
	private function draw(w:uint, h:uint):void {
		graphics.beginFill(bgColor);
		graphics.drawRect(0, 0, w, h);
		graphics.endFill();
	}
	
	private function clickHandler(event:MouseEvent):void {
		var target:Sprite = Sprite(event.target);
		//当TabChildren=false的时候,只有通过下面的语句才能触发【FocusEvent.FOCUS_IN】事件。
		//否则不能触发。
		stage.focus = target;
	}
}

例子2:当吧stage.focus=target这句话注释掉后,鼠标点击将不能够触发【FocusEvent.FOCUS_IN】事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值