`

代码出错问题

阅读更多

这是转自5uflash的文章,原文请点击这里

在写AS3代码的过程中,有些编译错误,或者运行错误,是很难检查。这儿我总结了一些曾经碰到过的问题。 1、TypeError: Error #1006: value 不是函数。 这是在运行时的报错,我们来看看是一段什么样的代码导致他报错的 大家先找找这段代码错在哪,为什么导致这个错误, 
在写AS3代码的过程中,有些编译错误,或者运行错误,是很难检查。这儿我总结了一些曾经碰到过的问题。
1、TypeError: Error #1006: value 不是函数。
这是在运行时的报错,我们来看看是一段什么样的代码导致他报错的
大家先找找这段代码错在哪,为什么导致这个错误,然后在看看后面说的错误原因

  1. private function clickHandle(e:MouseEvent):void{
  2.   if(e.currentTarget is Sprite){
  3.     e.updateAfterEvent()
  4.     (e.currentTarget as Sprite).visible = false;
  5.   }
  6. }
复制代码
如果你是传统程序员,这个错误一般情况来说,你都不会犯的;如果你是AS2到AS3的,或者说你以前写asp等网页程序的,这个问题的引发几率就相对比较高了。
我们都知道AS3的代码,如果没有";"的情况下也是可以编译、可以运行的。不过恰恰上述代码在e.updateAfterEvent()后因为没有";",导致他运行错误。因为这段代码在运行时,它是被当成了这样在运行
  1. e.updateAfterEvent()(e.currentTarget as Sprite).visible = false;
复制代码
updateAfterEvent返回的是void类型,那么把他当成函数来调用,自然会报错 value 不是函数。
总结1:大家明白了吗?从上面这个例子可以看出,养成加";"号的习惯还是非常重要的。 

2、TypeError: Error #1034: 强制转换类型失败:无法将 flash.events::Event 转换为 MyEvent。
同样这也是一个运行错误,我们来看看是一段什么样的代码导致他报错的
大家也先找找他的错在哪 
首先先看一下这个MyEvent类
  1. package
  2. {
  3.   import flash.events.Event; 
  4.   public class MyEvent extends Event
  5.   {
  6.     public static const MY:String = "my";
  7.     
  8.     public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
  9.     {
  10.       super(type, bubbles, cancelable);
  11.     }
  12.     
  13.   }
  14. }
复制代码
然后侦听这个事件,在得到它后转发到spr对象中
  1. addEventListener(MyEvent.MY,myHandle);
  2. private function myHandle(e:MyEvent):void{
  3.   spr.dispatchEvent(e);
  4. }
复制代码
再就是,spr对象中侦听了这个事件
  1. spr.addEventListener(MyEvent.MY,myHandle);
  2. private function myHandle(e:MyEvent):void{
  3.   trace(e);
  4. }
复制代码
最后在这个侦听的地方就报错了。 
在殿堂之路中,继承Event自定义事件举例中讲过这种问题的解决办法,但没有讲的很详细
很多新手在看高手的代码,都会看到自定义事件中都会重构clone这个方法,但是自己尝试后发现,不重构clone也不会出现什么问题,以至于有些人在写项目赶时间时,也不太喜欢100%模仿高手的写法,就会把重构clone这个看似很小,其实隐藏了秘密的东西给忽略掉。
在殿堂之路中有句原话: 
以下摘抄《殿堂之路》第300页原话
其中clone()方法最为重要,使用clone()方法可以返回当前事件对象的一个拷贝。这个clone()方法一般不需要我们手工调用,当我们将一个事件对象重复发送时,EventDispatcher类会自动调用clone()方法,产生这个事件的拷贝。
而上面的代码中就是在将MyEvent事件重复发送,好理解的说就是转发MyEvent事件,如果没有重构MyEvent事件,那么 EventDispatcher在重复发送时,调用的clone是Event的clone方法,那么clone出来的事件自然就是Event类,而不是 MyEvent,所以你在侦听时使用e:MyEvent类型接收时,自然就会报错无法将Event类转换成MyEvent类。
总结2:看书要仔细,看高手的代码一定要学习透彻,而不是拿来主义,或者是模仿主义!

分享到:
评论

相关推荐

    打印代码及出错抓图

    在IT行业中,打印代码和错误抓图是两个关键的调试和问题解决步骤。它们对于理解程序的运行状态、定位和修复错误至关重要。下面将详细解释这两个概念及其重要性。 首先,"打印代码"指的是在程序运行过程中,通过输出...

    IBM Storwize V系列存储错误代码

    在日常的使用过程中,可能会遇到各种错误代码,这些错误代码对应着不同的问题,通过对错误代码的查询和解释,可以快速定位问题并采取相应的解决措施。 错误代码通常与存储系统中出现的特定问题相关联,包括硬件故障...

    labview错误代码表.pdf

    为了帮助开发者快速定位和解决这些问题,LabVIEW提供了一套详细的错误代码表。本知识点将详细介绍LabVIEW错误代码表的相关内容,使LabVIEW学习者能够更好地掌握和应用。 首先,LabVIEW错误代码表包括多个部分,每一...

    蓝屏 错误代码 问题分析

    当遇到蓝屏时,系统会显示特定的错误代码,这些代码可以提供出错的具体位置和原因。理解这些错误代码对于正确诊断和解决问题至关重要。 一、蓝屏原因分析: 蓝屏发生的原因多种多样,常见的有硬件不兼容、驱动程序...

    v7000 错误事件标识和错误代码.pdf

    错误代码通常包括字母和数字的组合,能够指示出发生问题的具体模块或组件,同时也为用户和维护人员提供处理问题的线索。 2. 错误事件标识 事件标识是一个特定的代码或代码段,用于在IT系统的日志文件中识别和跟踪...

    代码文件+包括错误图片

    1. **复现问题**:尝试根据代码和错误信息在本地环境中重现问题,以便观察错误是如何发生的。 2. **调试代码**:使用调试工具逐行执行代码,观察变量值的变化,查找异常的触发点。 3. **日志分析**:如果程序有日志...

    三菱Q系列PLC错误代码

    当Q系列PLC在运行过程中遇到问题时,它会通过错误代码来向操作人员传达具体的问题所在。理解这些错误代码对于及时诊断和解决故障至关重要。 一、错误代码的分类 三菱Q系列PLC的错误代码通常分为以下几类: 1. 系统...

    VB错误代码查询 VB学习 错误代码

    在编写VB程序的过程中,开发者可能会遇到各种错误,这些错误通常会以错误代码的形式出现,帮助程序员定位问题所在。本资源集合了VB的常见错误代码,提供了一个方便的查询工具,以协助初学者和有经验的开发者快速理解...

    金蝶K3错误代码查询

    了解和掌握这些错误代码及其含义,对于及时排查问题、提高系统的稳定性和效率至关重要。 一、错误代码解析 1. **代码32767:False** - 表示一个布尔类型的错误判断,通常在逻辑判断中出现。 2. **代码32811:未...

    MySQL错误代码以及出错信息对照大全

    MySQL 错误代码是 MySQL 数据库管理系统中的一种错误处理机制,当 MySQL 遇到某些问题或异常情况时,系统将抛出一个错误代码,该错误代码可以帮助开发者和数据库管理员快速地定位和解决问题。下面是 MySQL 错误代码...

    OKI打印机的常见错误代码

    - **描述**:这一系列错误代码涵盖了打印机内部不同位置出现的卡纸问题。 - **原因**:纸张湿度大、厚度不合适或纸张放置不当等都可能导致卡纸现象。 - **解决方案**: - 打开打印机按照错误代码指示的位置取出卡住...

    中国移动短信网关错误代码汇总.pdf

    本文件主要汇总了中国移动短信网关在处理接口消息时可能出现的各种错误代码及其对应的含义,这对于理解和解决与短信服务相关的问题至关重要。 1. 错误代码0表示处理成功,表明请求已经被成功处理。 2. 错误代码1...

    MQ错误代码表

    MQ 错误代码表 MQ 错误代码表是 IBM WebSphere MQ 中用于描述错误的代码表。这些代码用于 MQ 客户端和服务器之间的通信中,用于描述错误的原因和解决方法。 MQRC_NONE (0, X'000"):没有理由的报告。如果是 MQCC_...

    EOS错误代码集

    为了确保操作的正确性,EOS提供了丰富的错误代码以帮助开发者识别和定位问题。本文集整理了EOS区块链中常见的错误代码及其含义,旨在为开发者提供一个快速查阅和理解EOS错误信息的参考。 首先,我们来看看EOS错误...

    佳能错误代码表_大家对照解决

    佳能打印机错误代码是用于帮助用户识别和解决打印机在运行过程中遇到的问题的一种方式。下面将对部分常见的佳能打印机错误代码进行详细解释: 1. **5100错误**:墨车超时错误,通常意味着打印头或墨车在预定时间内...

    中国移动短信网关错误代码汇总(20210922200732).pdf

    4. **错误代码101**:手机号码错误,可能是XML打包错误或获取用户信息时出错,也可能是鉴权过程中的手机号码输入不正确。 5. **错误代码102**:用户停机,用户状态不正常,可能包括'N', 'S', 'X', 'U'等状态。 6. ...

    java面试题之代码纠错

    java面试题中有一种代码纠错问题,现总结了几道代码错误问题

    windows出错代码查询

    首先,我们要明确的是,Windows出错代码是系统在遇到问题时产生的数字或字母组合,它提供了关于错误的详细信息。例如,常见的错误代码有0x80070002,表示文件或目录未找到,或者BSOD(蓝屏死机)时出现的停机代码,...

    LabVIEW错误代码表

    本文将详细介绍 LabVIEW 错误代码表,包括网络错误代码表、仪器驱动错误代码表、VISA 错误代码表、报表生成错误代码表、公式翻译器错误代码表、数学错误代码表、信号分析工具包错误代码表、信号分析错误代码表、逐点...

    解决eNSP错误代码2的综合指南:设备启动、端口占用、配置问题及通信故障排查

    ensp错误代码2 内容概要:本文详细介绍了在使用华为企业网络仿真平台(eNSP)时遇到错误代码 2 的多种原因及其解决方法。首先探讨了设备启动失败的原因,包括系统资源不足、软件冲突和设备配置错误,并提供了具体的...

Global site tag (gtag.js) - Google Analytics