AS3.0教程(6):强大的事件机制(2)

AS3.0游戏开发(一) 最近一直研究FLASH AS3.0的开发技术,深感用AS3.0开发2D游戏的方便与巧妙。我以前一直用OGRE,CEGUI等引擎制作3D游戏的,由于网页游戏的兴起,我也来学习2D网页游戏的开发。 开发一款2D游戏,我认为有三种主流途径。第一,使用传统的方法,利用VC++开发,这种方法非常普遍而且成果很多,大部分游戏平台和里面的游戏基本都是这种方式来开发的,有如此众多的作品,就不用质疑它的强大了,不 阅读详情

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)
今天Google小查了一下,居然有1060个网站转载了俺的系列教程。还包括了Blueidea, flash8, 5dmedia等顶级Web设计大站。非常开心,动力十足,呵呵。
其实到目前为止,我的3.0开发学习笔记已经有3万字左右的东西了,但都是些纲要和代码,整理成文,尤其是用比较有条理和易懂的方式写出来会比较慢。况且开发中的代码是随手拈来,但写教程的代码往往要经过一些改写,使得重点更突出。所以如果更新有点慢,请耐心一些,呵呵。

如何接收事件?如何做到AS3.0的标准事件编程?
Event改变的部分很多,这两天有空时,黑羽就在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。
我准备这样来讲解:
先给个接受事件的代码例子。在例子中,指出:
(1) Event对象发生了什么变化
(2) addEventListener语法的不同,原因,和const型必要性和用法
(3) Listener和As2.0有何不同,和this关键字的“改进了的记忆力”

黑羽一贯的风格,先来一个例子。我很想给个短一点的代码例子,但是要达到清楚,全面和标准的示范,我还是决定采用这个Document Class的示例。我会在每个代码段注一些注释,大家不明白的地方回贴说一下,我会尽量解答。
Document Class的含义和相关用法并不难,忘了的兄弟看我第3篇教程:
AS3.0教程(3):Document Class特色为我们带来了什么?

好,come on baby.
新建一个as文件,拷贝以下代码,命名为AddListener.as。
新建一个fla,命名为 "黑羽黑羽我爱你.fla"(本教程推荐使用,倘若不遵从可能导致喝凉水塞牙泡MM被踢炒股被套等严重后果,霍哈哈。Just kidding。)。设置它的文档类(Document Class)为AddListener.


//【黑羽】ActionScript 3.0系列教程(6)
//http://www.kingda.org
package {
import flash.display.Sprite;
import flash.events.MouseEvent;

//哈哈,看到了没,Document Class不仅可以扩展MovieClip,也可以扩展Sprite
//package里面的类名要和文件名相同
public class AddListener extends Sprite {
public function AddListener() {

 

//用package外面定义的类KingdaSprite创建一个实例,由于同文件中,所以不用import啦
var outsideChild:KingdaSprite = new KingdaSprite(0x00FF00, "outside_sprite");
addChild(outsideChild);//没有了这一句,你啥都看不到。

outsideChild.addEventListener(MouseEvent.CLICK, inclassHandler);//注册类里面的侦听器
outsideChild.addEventListener(MouseEvent.CLICK, outsideHandler);//注册类外面的侦听器
}

private function inclassHandler(event:MouseEvent):void {
trace("类里面的侦听器侦听到MouseEvent事件: " + event);
trace("this关键字指向:"+this);
}

}
}

function outsideHandler(event:MouseEvent):void {
trace("类外面的侦听器侦听到MouseEvent事件: " + event);
trace("this关键字指向:"+this);
}

import flash.display.Sprite;
import flash.events.MouseEvent;

//这个类就是画一个矩形,然后你点击这个矩形会发出标准鼠标click的事件
class KingdaSprite extends Sprite {
public var nickname:String;
public var ColorNum:uint;

//colorNumber就是#ffcc00这种类型的数,在AS3中推荐用新的uint型来标记它
public function KingdaSprite(colorNumber:uint, nameString:String) {
ColorNum = colorNumber;
nickname = nameString;
graphics.beginFill(ColorNum);
graphics.drawRect(0,0,100,100);
graphics.endFill();
}
}


鼠标一点击创建出来的绿色矩形,会看到输出

类里面的侦听器侦听到MouseEvent事件: [MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=64 localY=80 stageX=64 stageY=80 relatedObject=null ctrlKey=false altKey=false shiftKey=false delta=0]
this关键字指向:[object AddListener]

 

类外面的侦听器侦听到MouseEvent事件: [MouseEvent type="click" bubbles=true cancelable=false eventPhase=2 localX=64 localY=80 stageX=64 stageY=80 relatedObject=null ctrlKey=false altKey=false shiftKey=false delta=0]
this关键字指向:[object global]

 

演示完毕,我们来讲第一个话题
(1) Event对象发生了什么变化
AS2.0中创建event 对象是很随意的,只要这个对象有一个String属性叫做type的就可以了,甚至连target都可以省掉。不要以为这不规范不应该做,看看Flash类源码,Macromedia的程序员可不只一次的这样使用过。所谓上梁不正下梁歪,就是这样。(其实严格说也没什么不对,有时候是不需要target。但没有标准就是不好)
然后你在Event Object中爱添加什么就添加什么。极其自由,也就等于极其混乱。
3.0不同了,所有的事件必须都要继承自Event这个类(全饰名称flash.events.Event)。不然,哼哼,事件发送是不能成功地。
说说Event这个类,那叫一个NB。AS3.0的基石类是Object,Event是直接继承自Object的,开国大佬级别的。它里面定义了一些基本的事件名称,比如ACTIVATE(FlashPlayer得到系统焦点时事件),ADDED(对象被添加到显示时发送的事件)。AS3.0中有个好功能是cancel事件,但Event中这些基本事件统统是不能被cancel的,听起来似乎很NB。这不细说了,Event太多内容了。以后写高级内容时在提到如何运用吧。那叫一个爽字了的!要想Flash玩的转,Event类必须很精通。正所谓江湖人称:"平生不识Event,就称闪客也枉然。"
这样有什么好处?
好处太多了,最大的好处是一,规范了事件的定义,二,大量由此衍生的类省去了我们大量的时间和重复开发的成本。
规范事件的定义放到下一部分讲。至于内置的Event子类好处,大家请看上面fla的运行输出:
MouseEvent就是内建的一个Event子类,它的好处一看它的内容就明白:
从AS3.0起,任何一次点击事件我们都可以得到:
1.事件发生时鼠标的MC相对坐标(localX=64 localY=80)和绝对坐标(stageX=64 stageY=80)。 爽不爽?smile.gif
2.ctrl键,shift键,alt键有没有按下。你试试按着ctrl键再点击一下方块,那么ctrlKey就为true了。爽不爽?smile.gif
(其余参数不解释,涉及到高级运用。部分会在Event最后一节提到该怎么运用)
光这一个MouseEvent类,黑羽怎么着都觉得值人民币20块。

(2) addEventListener语法的不同,和const型必要性
这一节很重要,不过现在12点半了。精力不太好了,但又不想草草了事。明儿接着写,质量第一。数数也有小两千字了,先发出来顶顶先。
 

深入探索Flash 3.0与AS 3.0:贪吃蛇小游戏制作教程 ActionScript 3.0是一种面向对象的编程语言,是Adobe公司为了配合Flash Player 10的推出而开发的,主要用于开发富互联网应用程序(RIA)。作为ActionScript语言的最新版本,它提供了强大的功能,包括性能优化、内存管理以及面向对象编程的优势。使用ActionScript 3.0开发游戏,首先要搭建开发环境。这通常涉及到安装Adobe Flash Builder或Adobe Flash Professional,以及相应的SDK。 阅读详情

相关推荐

Flash AS3拖动效果实现教程

在交互设计中,拖动效果是一种常见的操作,它允许用户通过鼠标或触摸屏操作移动对象或界面上的元素。拖动效果的基本定义是用户通过持续接触屏幕或设备上的元素,并在空间中移动该元素的行为。拖动效果广泛应用于网页设计、桌面应用程序和移动应用中。例如,在网页中拖动图片来查看全图、在地图应用中拖动地图来查看不同的地区、在列表中拖动条目来重新排序,以及在拖拽式用户界面(Drag and Drop UI)中,用户可以将文件拖拽到目标位置以执行操作,如上传文件或整理文件夹。

weixin_26854475的博客 521

Flash的事件机制

1.先说一些[color=red][size=large]基础的东西[/size][/color](直接从网上copy过来) (1) 事件是一个对象,它由flash play产生和管理。事件流分捕获阶段,目标阶段和冒泡阶段。事件流的示意图如下,这里说明一下target和 currentTarget的概念。当一个事件流产生时,就产生了一个显示对象列表,而target是最里层的对象,而 curr...

yangkd的专栏 372

As3.0 关机功能

As3.0 写的关机功能,经测试,win7和xp系统都可以成功关机。

Flash as3.0 事件的发送和处理

DOM3事件机制包括4个步骤:注册侦听器、发送事件、侦听事件、移除侦听器。 注册侦听器,即指定发出的事件由那个对象的哪个方法来接受。·As3.0的事件处理机制的形式 全部事件的侦听addEventListener()。 侦听器统一使用Function,不允许使用Object的侦听器。 发送的事件的对象,必须是Event或其子类的实例。创建监听器 监听器必须是函数类型,必须只有一个参数,并且

默语之声的博客 2188

细说VLAN之untag和tag

一、拓扑图 先给出上面拓扑图的结论,后面再详细讲解: 结论:只有PC1与PC4之间能相互通信,除此之外,所有PC之间均不能通信,比如PC1与PC3不能建立通信。 针对Ping命令的一个知识: 要想ping通某台主机,必须满足两个条件: 1,源主机的ICMP请求包必须能达到目的主机。 2,目的主机的ICMP应答包必须能回到源主机。 二、理论基础 端口的出...

NoobMaster的博客 3万+

Unity3D实战:5分钟搞定RTSP监控视频流播放(附完整代码)

本文详细介绍了如何在Unity3D中快速实现低延迟RTSP监控视频流播放,提供完整代码和优化方案。通过Video Player组件和FFmpeg集成,开发者可以轻松应对智能家居和安防监控领域的实时视频流挑战,显著降低延迟并提升性能。

weixin_29015051的博客 587

AS3.0教程(1):与Flash9先来一次亲密接触!

 Flash Professional 9 Actionscript 3.0 Preview 版本今天发布了,意味着从此我们从此不仅仅只能使用Flex 2来使用AS3.0,更可以使用我们一直很熟悉的Flash IDE来进行AS3.0开发了。 与Flex 2不同,Flash 9 alpha(即上面的Flash Professional 9 Actionscript 3.0 Preview )

davidsong0907的专栏 1553

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 279

Flash As3.0 学习笔记 第二课-编写元件类-将元件添加到场景中

1.建立一个Flash文件 2.插入一个元件命名为Movie1   随便在上面画个图形。 3.CTRL+L 将库显示出来 4.右键库文件中的Movie1选择属性 5.勾上为ActionScript导出 6.点击类旁边的笔 进行编写元件的类(当然这里的类可以是已经写好的

scl512的专栏 6329

微信小程序 - 解决报错 operateAudio:fail audioInstance is not set(wx.getRecorderManager苹果ios真机调试运行,播放音频播放出错解决)

微信小程序,苹果ios系统,真机测试报错,播放音频报错operateAudio:fail audioInstance not exist,errCode: -1,小程序生成音频播放报错errMsg,真机调试报错开发者工具没问题,wx.getRecorderManager,音频实例,InnerAudioContext,各种方法都试了不行,只有ios苹果手机有这个问题,IOS 出现 operateAudio,在iOS无法播放的解决方案,更新到最新版本了还是不行,链接没有特殊字符,微信小程序全局音频设置,手机上播

🏆 前端领域优质创作者 1万+

① Django手把手从零开发个人博客-前言

手把手教你从零开始玩转手把手教你从零开始玩转Django,全面学习并了解django的运行机制、开发全流程及线上部署。Django,全面学习并了解django的运行机制、开发全流程及线上部署。 专栏介绍 本套教程遵循Django的设计思想,开门见山,快速切入主题,拒绝拖沓,在实战中学习每一个知识点,提高学习的趣味性以及个人成就感,并且能快速将所学运用到实际项目中。 将从零手把手带着你一步步完成博客的每一个功能,通过实现博客文章列表页、文章详情页、作者页面等功能来学习和了解django的视图查询模块相关知.

轻编程的博客 513

AS3中不同类间的广播与接收简单例子

 1.文档类:DispatchEventDemo.as package { import flash.display.Sprite; public class DispatchEventDemo extends Sprite {   public function DispatchEventDemo()   {    new A    new B     ...

wangangie6 231

JeecgBoot passwordChange 任意用户密码重置漏洞复现

​JeecgBoot 框架passwordChange接口存在任意用户密码重置漏洞,未经身份验证的远程攻击者可以利用此漏洞重置管理员账户密码,从而接管系统后台,造成信息泄露,导致系统处于极不安全的状态。

0xSec 2641

AS3.0:强大的事件机制(上)

回顾和比较AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别跟俺说可以Copy, Paste,这不叫重用,这叫低级。AS2.0中,增加了一些事件处理机制:1.回调函数: onLoad, onComplete等。相信兄弟们最熟悉的应该就是XML.onload回调函数了。2.事件侦听器型:这个就是addL

由雪伟的专栏 3511

通信原理 | python调制识别数据及代码

数据集包含了从-20dB 到+18dB 总共 20 个信噪比(步长为 2)下的 11 种调制信号, 包括 AM-DSB、 AM-SSB 和 WBFM 三种模拟调制信号,以及 BPSK、 QPSK、 8PSK、 CPFSK、 GFSK、 PAM4、 QAM16 和 QAM64 八种数字调制信号。其中信号的中心频率为 200KHz,采样频率为 1Msamp/s,且每个信噪比下每种调制信号包含 1000 个信号。其中每个信号包含 IQ 两路数据,且每一路数据都包含有 128 个采样点。

若北辰 1758

0.1 ROCm rocr-libhsakmt实现深度剖析专栏介绍

本专栏深入解析AMD ROCm生态核心组件rocrruntime,从底层硬件交互到上层封装实现。重点剖析libhsakmt驱动层的七大核心模块设计,包括拓扑管理、队列调度、事件同步等关键机制;详解C++接口封装策略与工程实践,如资源管理、多线程优化等。通过"硬件-驱动-应用"全链路技术拆解,帮助开发者深入理解ROCm运行时机制,解决性能调优、调试等实际问题,为HPC/AI应用开发提供底层技术支撑。

图形/计算GPU的驱动与虚拟化技术分享园地 5979

ActionScript 3.0(AS3)教程合辑

蓝色经典中关于AS3的教程合辑《ActionScript 3.0 语言和组件参考》是 Flash® Player 应用程序编程接口 (API) 的参考手册。点此进入优快云会员下载页面 作者: KingdaSun [黑羽] AS3.0教程:与Flash9先亲密接触     http://bbs.blueidea.com/viewthread.php?tid=2635339 AS3

小李专栏 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

AS3.0教程(9):强大的事件机制(5)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)有兄弟反映,似乎AS3的事件机制有些复杂。在我看来,编程上 “复杂”这个词一般有两种定义:实现麻烦 ,或者内容众多。AS3中的事件机制其实现并不麻烦,逻辑更加清楚简单,因此不是“实现麻烦”这一类。那应该指的是“内容众多”这个意思。黑羽倒觉得"内容众多"往往是褒义词,意味着API丰富,控制范围和深度大。那么一旦得其要领,

红杉树(ecitnet)的博客 1410

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

AS3.0自定义事件

下面给大家编个故事,有助于大家能更好更形象地去理解AS3.0自定义事件!  一、第一步   首先忘记你学到的任何关于事件类的知识,不知道有这么一回事,然后只知道FLASH有个内置类,名叫EVENT 二、第二步   来看这个类有什么——它有很多很多常数属性,比如COMPLETE,CLOSE,CLEAR等等。那么,这些参数干什么用的呢?很明确的告诉你,flash已经用掉了,用来标记一些fl

程序交流中心 1628

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

AS3.0教程:强大的事件机制(5)

 有兄弟反映,似乎AS3的事件机制有些复杂。 在我看来,编程上 “复杂”这个词一般有两种定义:实现麻烦 ,或者内容众多。 AS3中的事件机制其实现并不麻烦,逻辑更加清楚简单,因此不是“实现麻烦”这一类。 那应该指的是“内容众多”这个意思。黑羽倒觉得"内容众多"往往是褒义词,意味着API丰富,控制范围和深度大。那么一旦得其要领,即思路通畅,记忆深刻,也就不会觉得“复杂”了。 我也会尽量...

wangangie2 147

AS3.0教程(5):强大的事件机制(1)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)Event机制作为重头戏,在ActionScript 3.0中加强了很多。更加统一、易用、标准、灵活。ActionScript 2.0中有众多的事件实现机制:回顾和比较AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别

红杉树(ecitnet)的博客 1104

AS3.0教程(10):强大的事件机制(6)

(如蒙转载,请留下我的Blog链接:www.kingda.org, thx)(2007-10-30update: 呵呵,更正了一个手误。最后一个代码例子中的最尾部的花括号应该放在第一个class的结尾后。这样下面的kingdaClass才是包外类。否则编译不会通过。sorry^^ 谢谢daozi的细心。)事件机制写的太多了,我自己都有点烦了。但没办法,,太重要了。而且AS3做了这么多好的改进,值得

红杉树(ecitnet)的博客 1443

AS3.0教程(7):强大的事件机制(3)

如蒙转载,请留下我的Blog链接:www.kingda.org, thx)(2) addEventListener语法的不同,原因,和const型必要性和用法本例如果是AS2.0,那么代码是这样写的:outsideChild.addEventListener("click", inclassHandler)本例是3.0,如果你trace一下其中的MouseEvent.CLICK

红杉树(ecitnet)的博客 4225

AS3.0强大的事件机制

 [1b]回顾和比较[/1b] AS1.0玩家最爱用onClipEvent(), on(),又方便又直接。缺点在于逻辑分散到了各个舞台元件中,难以管理和维护。更加别说代码重用了。别跟俺说可以Copy, Paste,这不叫重用,这叫低级。 [1b]AS2.0中,增加了一些事件处理机制:[/1b] (1)回调函数: onLoad, onComplete等。相信兄弟们最熟悉的应该就是XML....

wangangie17 114

探索AS3JS:将ActionScript 3.0转换为JavaScript的强大工具

探索AS3JS:将ActionScript 3.0转换为JavaScript的强大工具 项目介绍 AS3JS是一个基于Node.js的工具,旨在将ActionScript 3.0代码转换为纯JavaScript代码。这一工具不仅支持多种IDE的智能代码补全功能,如FlashDevelop和FDT,还允许开发者使用熟悉的AS3包结构编写代码,并自动转换为独立的JavaScript文件。AS3JS的核...

gitblog_00134的博客 822
上一篇: AS3.0教程(5):强大的事件机制(1)
下一篇: AS3.0教程(7):强大的事件机制(3)
wx红杉树
博客等级 码龄21年 383粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值