`
#天琪#
  • 浏览: 159299 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

AS3事件侦听

    博客分类:
  • AS3
阅读更多
转自http://blog.5d.cn/user12/dzxz/200807/490586.html

侦听的步骤:

1、用户( Listener ) 将 自己 添加到 事件源 的用户名单(目录)中去。 用户.addEventListener( 事件源.事件, 处理函数 );  

2、当事件发生时,事件源将消息发送给订阅了该事件的用户。(通过查找用户名单,通知每一个名单上的用户)

3、系统按照事先的“约定”,执行相关的函数。

特点:

事件源 可以同时向多个用户发送消息,或者说被多个用户观注(侦听)。(所以是侦听对象?)

用户 可以同一时间接收不同的消息,或者说侦听不同的事件,所以将消息的用户也称侦听器。

用户与用户之间没有必然的关系,接收同一消息的前后次序由系统决定,基本上是同时收到消息。

具体到一个对象,有可能既是 某些消息的发出者(事件源),又是某些事件的接收者(侦听器)。

关于鼠标事件:

当显示对象中具有实际的内容时,它才能感受(侦听)到(它自己的)鼠标相关的事件。

当鼠标在 显示对象中完整的进行了一次按下、抬起之后,才会触发 Click 事件。

在对象的外面按下,里面抬起时,只触发 MouseUp 事件。

在对象的里面按下,外部抬起,只触发 MouseDown 事件。(也就是说 有效的按下 和 有效的抬起 并不总是同时出现)

Click  事件总是在 MouseUp 事件之后才发生的。

如果希望在全屏中实现随意画线,那么应该通过 stage 属性去侦听发生在舞台上的鼠标事件。

stage 是显示对象的一个属性,通过它可以访问舞台的相关属性内容。

例一: 下面的类当做是文档类时,可以在舞台的所有位置进行画线,因为它是对舞台上的鼠标事件进行的侦听。

package {
  import flash.display.Sprite;
  import flash.events.MouseEvent;
  public class StageDraw extends Sprite {
   
    // Flag to indicate whether the mouse is in draw mode
    private var _drawing:Boolean;
   
    public function StageDraw(  ) {
      // Configure the line style
      graphics.lineStyle( 2, 0xFFCC33 );
     
      // Drawing is false until the user presses the mouse
      _drawing = false;
     
      // Add the mouse listeners on the stage object to be
      // notfied of any mouse event that happens while the
      // mouse is over the entire movie
      stage.addEventListener( MouseEvent.MOUSE_DOWN, startDrawing );
      stage.addEventListener( MouseEvent.MOUSE_MOVE, draw );
      stage.addEventListener( MouseEvent.MOUSE_UP, stopDrawing );
    }
   
    public function startDrawing( event:MouseEvent ):void {
      // Move to the current mouse position to be ready for drawing
      graphics.moveTo( mouseX, mouseY );
      _drawing = true;
    }
   
    public function draw( event:MouseEvent ):void {
      if ( _drawing ) {
        // Draw a line from the last mouse position to the
        // current one
        graphics.lineTo( mouseX, mouseY ); 
      }
    }
   
    public function stopDrawing( event:MouseEvent ):void {
      _drawing = false;
    }
   
  }
}
例二:下面的代码,与库中的元件进行链接后,在元件的可显示区域内,可进行画线,因为,这里侦听的是可显示元件上发生的鼠标事件,只有当元件中的实质内容时,才会触发鼠标的相关事件。

package
{
import flash.display.MovieClip;
import flash.events.Event ;
import flash.events.MouseEvent;

public class DrawLine extends MovieClip 
{
  private var mc:MovieClip ; 
  public function DrawLine()
  {
   mc = new MovieClip();
   addChild( mc ); 
   addEventListener(MouseEvent.MOUSE_DOWN, onMD);   
  }  
  public function onMD(evt)
  {
   trace( "mouse down");
   mc.graphics.lineStyle(3, 0xffffff, 1);
   mc.graphics.moveTo( mouseX, mouseY);
   addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
   addEventListener(MouseEvent.MOUSE_UP, onMU );
  }
  public function onMouseMove( Evt:MouseEvent  )
  {  
   mc.graphics.lineTo(mc.mouseX, mc.mouseY );  
   //trace( mouseX,mouseY );
  }
  public function onMU(evt)
  {
   trace( "mouse up");trace( "clicked ");  
   removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
   removeEventListener(MouseEvent.MOUSE_UP, onMU );   
  }
}
}

事件处理函数需要指定一个参数,该参数为 Event 类型,通过 target 属性和currentTarget 属性,可以访问到发生事件的直接对象,代码形式为  evt.target      evt.currentTarget 。

示例三: 分听侦听舞台事件 和 元件中的事件,可以发现两者的作用范围不同。

package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
 
public class  Listener extends Sprite
{
  function Listener()
  {
   //侦听舞台上发生的鼠标点击,全部屏幕范围均有效
   stage.addEventListener( MouseEvent.MOUSE_DOWN, onMD );
  
   //侦听发生在元件有效范围上的点击,只有在元件的实质内容上才发生。
   addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown);
  }
  private function onMD (evt)
  {
   trace( "mouse down on the stage" );
  }
  public function onMouseDown(evt)
  {
   trace( "mouse down on the sprite" );
  }
}

}

分享到:
评论

相关推荐

    AS事件侦听案例,源码

    在提供的"第02章"压缩包文件中,可能包含了一系列的AS3事件监听案例代码,通过分析和实践这些代码,你可以更深入地了解事件监听的使用和技巧。例如,你可能会看到如何在舞台上监听鼠标点击,或者在时间轴上监听帧...

    第六节 事件侦听.docx

    例如,在AS3中,`SimpleButton`的`enabled`属性在2.0版本中可以用来禁用按钮,但在3.0中,对于`SimpleButton`无效,但适用于`Button`类。如果要禁用`SimpleButton`,我们可以使用`mouseEnabled`属性。设置`...

    AS2中的侦听器

    在AS2(ActionScript 2.0)中,事件处理是动态交互系统的重要组成部分,而事件侦听器是实现这一机制的关键。事件侦听器允许我们响应特定的事件,如用户点击、对象加载等,而无需不断检查这些事件是否已经发生,这与...

    AS3.0载入flv播放并侦听.zip

    在本文中,我们将深入探讨如何使用ActionScript 3.0(AS3.0)通过FLVPlayer组件加载和播放外部的FLV视频文件,并实现基本的播放控制功能,如播放、暂停和监听视频事件。首先,我们需要理解AS3.0的基础知识,它是...

    javascript事件侦听器

    JavaScript事件侦听器是JavaScript中处理用户交互或DOM(文档对象模型)变化的关键机制。它允许程序员注册回调函数,以便当特定的事件发生时,这些函数会被调用。事件可以是用户的行为,如点击按钮、鼠标移动,或者...

    多线程 TCIIP 侦听器

    3. 主程序中实例化并启动侦听器: ```vbnet Module Module1 Sub Main() Dim listener As New TCPListener(12345) listener.StartListening() Console.ReadLine() ' 保持主程序运行,直到用户按下回车键 ...

    as3常用属性语句整理

    在as3.0中,侦听器是处理事件的核心机制。它允许程序员为特定的事件目标(如按钮点击)注册回调函数,从而在事件触发时执行预定义的代码。这极大地增强了交互性,使开发者能够响应用户的输入或其他环境变化。 #####...

    AS3自学教程

    自学AS的语言和方法,语句块,函数定义,包,类,事件侦听器

    AS3Book.rar

    3. **事件处理**:AS3中的事件模型是其强大之处,通过addEventListener、removeEventListener和dispatchEvent等方法,可以实现用户交互和组件间的通信。 4. **显示列表管理**:AS3中的Stage和DisplayObject体系结构...

    多线程 TCP/IP 侦听器

    3. **TcpListener类** - TcpListener是VB.NET中实现TCP服务器的基础,用于监听特定IP地址和端口上的连接请求。 - 使用Start方法启动监听,AcceptTcpClient方法接收客户端连接,GetStream方法获取与客户端的网络流...

    AS3开发指南

    7. **事件处理**:讲解事件处理的基础知识和ActionScript 3.0事件处理与早期版本的差异,包括事件流、事件对象和事件侦听器,以及示例程序。 8. **显示编程**:探讨ActionScript中的显示编程基础,如核心显示类、...

    wpf listbox 滚动事件的判断

    在某些应用场景中,我们可能需要监听和处理Listbox的滚动事件,例如实现无限滚动、动态加载数据或者自定义滚动效果。本篇文章将详细讲解如何在WPF中对Listbox的滚动事件进行判断和处理。 首先,我们要了解WPF中...

    flash_as3_components_help

    as3组建帮助 目标读者 本手册的目标读者是要构建 Flash 应用程序并希望使用组件加快开发速度的开发人员。您应 当已经熟悉如何开发 Flash 应用程序和编写 ActionScript。 如果对编写 ActionScript 还不够熟练,您可以...

    Flash AS3 代码实现滤镜动画效果

    ### Flash AS3 代码实现滤镜动画效果 #### 背景与概述 在Flash开发领域,使用ActionScript 3.0 (AS3) 实现动态滤镜效果是一种常见的技术手段,尤其对于那些追求视觉冲击力和交互性的项目来说更是如此。本文将详细...

    事例_多线程 TCIIP 侦听器(VB.NET)

    3. **接收连接**:当有客户端连接时,我们需要使用TcpListener的AcceptTcpClient方法来接收连接。这个方法会阻塞,直到有新的连接到达。 ```vb.net Dim client As TcpClient = listener.AcceptTcpClient() ``` 4. ...

    AS3 Gaia FrameWork

    Gaia强大的自定义和事件侦听功能使用户可以很方便的更改网站逻辑。此外Gaia还整合了SWFAddress,GreenShock Tween,采用MVC,Singleton等设计模式和业界流行的最佳解决方案(Best Practice)。Gaia还提供了配套的...

    flash as2.0

    事件处理函数可以分为事件处理函数方法和事件侦听器两类。 类和对象 类是可以用于创建新对象类型的数据类型。类可以具有属性和方法,可以用于定义对象的行为。对象是类的实例,具有该类的所有属性和方法。 标识符...

Global site tag (gtag.js) - Google Analytics