当前位置: 代码迷 >> Web前端 >> as3旋钮事件
  详细解决方案

as3旋钮事件

热度:137   发布时间:2012-11-07 09:56:10.0
as3按钮事件

?在刚开始学As3时,如果不知道按钮的事件如onPress的话,实在是件很没有头绪的事情。
在 As3.0中,所有的时间都已经被Event统一管理了.相对As2.0来说,按钮事件是在As3中变动最大的事件. 在As3.0中例如onPress等以前的按钮事件写法已经基本退出了历史的舞台.取而代之的是统一的管理和 使用(鼓掌....)
As3.0中,主要的按钮元素仍然是MC(flash.display.MovieClip)和Button (flash.display.SimpleButton),值得一提的是,MovieClip类继承自Sprite,而Simplebutton直接继承 自InteractiveObject.可以说,Simplebutton类是少有超脱于Sprite类控制之外的显示对象同学,恩, 我知道有有颗追逐自由的心......区别等下面说道了再继续说.
介绍了显示元素,那么改介绍事件对象了,他就是继承自Event的MouseEvent (flash.events.MouseEvent)了,其实践列表如下:
CLICK
DOUBLE_CLICK
MOUSE_DOWN
MOUSE_MOVE
MOUSE_OUT
MOUSE_OVER
MOUSE_UP
MOUSE_WHEEL
ROLL_OUT
ROLL_OVER
中里面的DOUBLE_CLICK就是江湖上传闻已久的双击事件了。不过我 觉得DOUBLE_CLICK目前还是棵菜,As3中加入了DOUBLE_CLICK却没有什么控制DOUBLE_CLICK与CLICK的好 办法,让我觉得有些草率.
话不多说了,我介绍下我写的一个实例:
分别有如下文 件:click_test.fla,main.as,mybtn.as,mymc.as.
[1b]click_test.fla[/1b]
定义Document Class为main.as,在库中创建一个按钮 (test_btn)和一个MC(test_mc),并分别命名为test_btn类和test_mc类,基类分别为mybtn.as和 mymc.as.
[1b]mybtn.as[/1b]?
/*@
Author:frank
Site:www.2solo.cn
Date:2008.01.13
Info:场景上的实例类,继承SimpleButton
*/
package {
?import flash.display.SimpleButton;
?public class mybtn extends SimpleButton {
??public function mybtn() {
???this.doubleClickEnabled=true;
??}
?}
}[1b]mymc.as[/1b]
/*@
Author:frank
Site:www.2solo.cn
Date:2008.01.13
Info:场景上的实例类,继承MovieClip
*/
package {
?import flash.display.MovieClip;
?public class mymc extends MovieClip {
??public function mymc() {
???this.stop();
???this.doubleClickEnabled=true;
???this.buttonMode=true;
??}
?}
}需要说的是,MovieClip和SimpleButton两者都doubleClickEnabled,而MC中的是来自 Sprite,SimpleButton中的则直接来自InteractiveObject,瞧这关系,啧啧.当然,用起来是一样的, Sprite是继承自InteractiveObject的.
[1b]main.as[/1b]
/*@
Author:frank
Site:www.2solo.cn
Date:2008.01.13
Info:测试MovieClip与SimpleButton的按钮功能
main是场景控制类,
*/
package {
?import flash.display.Sprite;
?import flash.events.Event;
?import flash.events.MouseEvent;
?public class main extends Sprite {
??var clickBtnA=new test_mc;
??var clickBtnB=new test_btn;
??trace("Install");
??public function main() {
???addMC();
???dispatchLis(clickBtnA);
???dispatchLis(clickBtnB);
??}
??private function addMC() {
???addChild(clickBtnA);
???addChild(clickBtnB);
???clickBtnA.x=20;
???clickBtnA.y=20;
???clickBtnB.x=20;
???clickBtnB.y=100;
??}
??protected function dispatchLis(target):void {
???target.addEventListener( MouseEvent.CLICK, btnClick);
???target.addEventListener( MouseEvent.DOUBLE_CLICK ,btnDoubleClick);
???target.addEventListener( MouseEvent.MOUSE_DOWN ,btnMd);
???target.addEventListener( MouseEvent.MOUSE_OVER? ,btnMo);
???target.addEventListener( MouseEvent.MOUSE_UP ,btnMu);
???target.addEventListener( MouseEvent.ROLL_OVER ,btnRover);
???target.addEventListener( MouseEvent.ROLL_OUT ,btnRout);
??}
??protected function btnClick( evt:MouseEvent):void {
???trace( "Click"+evt.currentTarget);
??}
??protected function btnDoubleClick( evt:MouseEvent):void {
???trace( "DoubleClick"+evt.currentTarget);
??}
??protected function btnMd( evt:MouseEvent):void {
???trace( "MouseDown"+evt.currentTarget);
??}
??protected function btnMu( evt:MouseEvent):void {
???trace( "MouseUp"+evt.currentTarget);
??}
??protected function btnMo( evt:MouseEvent):void {
???trace( "MouseOver"+evt.currentTarget);
??}
??protected function btnRover( evt:MouseEvent):void {
???trace( "MouseRover"+evt.currentTarget);
??}
??protected function btnRout( evt:MouseEvent):void {
???trace( "MouseRout"+evt.currentTarget);
??}
?}
}
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/2004.html
  相关解决方案