可视化对象列表模型提供一种简单的方法通过 SimpleButton 类创建按钮。SimpleButton 类允许

用户用鼠标和可视化对象进行交互,通过各种状态定义交互方法,SimpleButton 按钮的状态有

以下这些:

upState

代表按钮默认"up"状态的对象,当鼠标不在按钮上,按钮就处于这个状态。

overState

当鼠标移动到按钮上时按钮的状态,鼠标离开时按钮又回到"up"状态。

downState

当鼠标按下左键时所处的状态

hitTestState

这个状态定义按钮的界限,只是用来跟踪鼠标的目的。

             

package {


import flash.display.*;


import flash.events.*;


public class SimpleButtonDemo extends Sprite {


public function SimpleButtonDemo( ) {


var button:SimpleButton = new SimpleButton( );


button.x = 20;


button.y = 20;


button.upState = createCircle( 0x00FF00, 15 );


button.overState = createCircle( 0xFFFFFF, 16 );


button.downState = createCircle( 0xCCCCCC, 15 )spacer.gifspacer.gifspacer.gif

button.hitTestState = button.upState;

button.addEventListener( MouseEvent.CLICK, handleClick );

addChild( button );

}

private function createCircle( color:uint, radius:Number ):Shape {

var circle:Shape = new Shape( );

circle.graphics.lineStyle( 1, 0x000000 );

circle.graphics.beginFill( color );

circle.graphics.drawCircle( 0, 0, radius );

circle.graphics.endFill( );

return circle;

}

private function handleClick( event:MouseEvent ):void {

trace( "Mouse clicked on the button" );

}

}

}

hitTestState 属性可能最有意思了,我们注意到上面的代码中把hitTestStateupState设成了一样

的状态。也就说当鼠标进入upState 对象范围大小时就激活事件。

hitTestState 可以被设置成任何可显示的对象,像下面的代码那样把激活区域设大些:

button.hitTestState = createCircle( 0x000000, 50 );

再次运行你会发现,当鼠标还没靠近圆,over状态就激活了,这就是激活半径现在是50的缘故。hitTestState就是用来跟踪鼠标的目的的,也就是鼠标要做什么事。