手机
当前位置:查字典教程网 >网页设计 >Flash教程 >Actionscript 3.0 鼠标事件
Actionscript 3.0 鼠标事件
摘要:关于Actionscript3.0的事件机制,以后分模块一个一个介绍,最后形成一个完整的文档。看了第一章,就说说鼠标事件,顺便说下我遇到的一...

关于Actionscript 3.0的事件机制,以后分模块一个一个介绍,最后形成一个完整的文档。看了第一章,就说说鼠标事件,顺便说下我遇到的一个问题。Actionscript 3.0鼠标事件无非就是监听和捕获鼠标事件,比如Click,DoubleClick等,AS3中鼠标事件包是在flash.events.MouseEvent中。

在这里贴一个简单ActionScript 3.0实现写字板程序代码,结合代码来理解鼠标的监听,捕获处理过程。

复制代码 代码如下:

package

{

import flash.display.Sprite;

import flash.events.Event;

import flash.events.MouseEvent; //import MouseEvent 包

/**

* @Written by Leezhm, 6th Jun, 2009

* @Contact : Leezhm@126.com

* @author : Leezhm

*

**Last Modified by Leezhm on 6th Jun, 2009

*

*/

[SWF(height = "450", width = "600", backgroundColor = "0xFFFFFF", frameRate = "31")] //设置应用程序属性

public class Main extends Sprite

{

public function Main():void

{

if (stage)

{

Init();

}

else

{

addEventListener(Event.ADDED_TO_STAGE, Init);

}

}

private function Init(e:Event = null):void

{

removeEventListener(Event.ADDED_TO_STAGE, Init);

// entry point

addEventListener(Event.ENTER_FRAME, OnEnterFrameHandler); //监听ENTER_FRAME事件,一个重要的事件

}

private function OnEnterFrameHandler(e:Event):void //ENTER_FRAME事件的处理函数

{

this.DrawGraphic();

}

private function DrawGraphic():void

{

this.stage.addEventListener(MouseEvent.MOUSE_DOWN, OnMouseDownHandler); //监听鼠标Down事件

}

private function OnMouseDownHandler(e:MouseEvent):void //处理鼠标Down事件

{

this.graphics.lineStyle(2, 0, 1);

this.graphics.moveTo(this.mouseX, this.mouseY);

this.stage.addEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler); //监听鼠标MOVE事件

}

private function OnMouseMoveHandler(e:MouseEvent):void //鼠标MOVE事件处理函数

{

this.graphics.lineTo(this.mouseX, this.mouseY);

this.stage.addEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler); //监听鼠标UP事件

}

private function OnMouseUpHandler(e:MouseEvent):void //处理鼠标UP事件

{ // 移除对鼠标DOWN、MOVE和UP事件的监听

this.stage.removeEventListener(MouseEvent.MOUSE_DOWN, OnMouseDownHandler);

this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, OnMouseMoveHandler);

this.stage.removeEventListener(MouseEvent.MOUSE_UP, OnMouseUpHandler);

}

}

}

其实看上面的代码就很简单地理解Actionscript 3.0中鼠标事件的处理过程,顺便传一张效果图片。

Actionscript 3.0 鼠标事件1

好了说一个我曾经犯的错误,代码如下:

复制代码 代码如下:

package

{

import flash.display.Sprite;

import flash.events.MouseEvent;

public class A extends Sprite

{

public function A()

{

graphics.beginFill(0xFF0000);

graphics.drawCircle(100,100,40);

graphics.endFill();

addEventListener(MouseEvent.CLICK, testclick);

}

private function testclick(event:MouseEvent):void {

trace("Hello World!!!");

}

}

}

实际上上面的这段代码并不响应鼠标的CLICK事件,为什么,开始我也花了很长时间来查找原因。其实这涉及到Actionscript 3.0的事件实现机制,在这里简单解释下:

原因很简单,因为上面那样的一个文档类是空的,根本就没有任何显示对象,所以就不会响应鼠标事件了(那个DrawCircle 不能算显示对象,它只能算是一个背景而已,并不在Actionscript的显示列表中 ,所以Actionscript事件机制中就不可能向它分发事件消息)。但下面对以上代码做一下修改就可以。

复制代码 代码如下:

package {

import flash.display.Sprite;

import flash.events.MouseEvent;

public class A extends Sprite {

public function A() {

var _sp:Sprite=new Sprite()

_sp.graphics.beginFill(0xFF0000);

_sp.graphics.drawCircle(100,100,40);

_sp.graphics.endFill();

addChild(sp)

_sp.addEventListener(MouseEvent.CLICK, testclick);

}

private function testclick(event:MouseEvent):void {

trace("Hello World!!!");

}

}

}

对比俩代码就可以发现,后面的加了一个显示对象,并在显示对象上监听鼠标事件。 当然也可以想第一段代码中那样在Stage上监听。

注意,直接this.addEventListener这样来监听的是root,并不是Stage这样的DisplayObject对象,同样是不可以的。

【Actionscript 3.0 鼠标事件】相关文章:

ActionScript3.0中建立帧频计数器的方法

Flash实例教程:通过声音对象的控制来制作播放器

Flash结合Photoshop制作图片模糊渐变动画

Flash制作动画时的一些常用命令

Flash AS 入门教程 loadMovie应用举例 多画面与画中画实现

Flash AS 教程:动画事件

Flash制作鼠标划过文字产生光的动画特效

ActionScript 学习小心得

FLASH AS鼠标拖拽与旋转MC教程

学习Flash ActionScript编程的注意事项

精品推荐
分类导航