重写mxml组件

遇到的问题挺无聊的,使用ToggleButtonBar组件时,application捕捉不到MouseEvent.CLICK事件。看了下源码,问题出在这里
ToggleButtonBar.as
    /**
     *  @private
     */
    override protected function clickHandler(event:MouseEvent):void
    {
        var index:int = getChildIndex(Button(event.currentTarget));

        // 143958
        _selectedIndex = index;

        if (_toggleOnClick && index == selectedIndex)
        {
        	selectedIndex = -1;
            hiliteSelectedNavItem(-1);
        }
        else
            hiliteSelectedNavItem(index);

        super.clickHandler(event);
    }

内部已经捕捉了这个事件,并没有抛到上层来,没办法,只能尝试重组这个组件。

以下为用as方式重写这个组件(个人推荐)
import flash.events.MouseEvent;
	
	import mx.controls.ToggleButtonBar;

	public class ToggleButtonBar1 extends ToggleButtonBar
	{
		public function ToggleButtonBar1()
		{
			super();
		}
		
		override protected function clickHandler(event:MouseEvent):void
	    {
			super.clickHandler(event);
			dispatchEvent(event);
    	}
	}

以下为用mxml方式重写这个组件
<?xml version="1.0" encoding="utf-8"?>
<mx:ToggleButtonBar xmlns:mx="http://www.adobe.com/2006/mxml" >
	<mx:Script>
		<![CDATA[
			override protected function clickHandler(event:MouseEvent):void
		    {
		        super.clickHandler(event);
		        dispatchEvent(event);
		    }
		]]>
	</mx:Script>
	
</mx:ToggleButtonBar>

解决

代码、思路都没什么好说的,纯粹是第一次做记录一下。

你可能感兴趣的:(xml,Flash)