可视化对象列表模型提供一种简单的方法通过 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 )
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 属性可能最有意思了,我们注意到上面的代码中把hitTestState 和upState设成了一样
的状态。也就说当鼠标进入upState 对象范围大小时就激活事件。
hitTestState 可以被设置成任何可显示的对象,像下面的代码那样把激活区域设大些:
button.hitTestState = createCircle( 0x000000, 50 );
再次运行你会发现,当鼠标还没靠近圆,over状态就激活了,这就是激活半径现在是50的缘故。hitTestState就是用来跟踪鼠标的目的的,也就是鼠标要做什么事。