使用Tween类移动舞台元素时突发报错,求问题原因分析
之前一直正常的Tween代码突然报错,大概率是以下几个常见问题导致的,你可以逐一排查:
目标对象
q1状态异常:这是最常见的原因。如果q1已经被从舞台移除(比如调用了removeChild(q1))、被设置为null,或者已经被垃圾回收销毁,那么Tween类找不到目标对象就会抛出错误。你可以在创建Tween前加一行调试代码确认:trace(q1),如果输出是null,那肯定是这个问题,得检查后续代码有没有不小心销毁或重置了q1。属性或缓动类的引用问题:虽然你之前代码正常,但如果不小心修改了导入语句或者拼写错误,也会出问题。比如误删了
import fl.transitions.easing.*,或者把Elastic.easeOut写成了其他错误的缓动类名。另外要确认'x'这个属性名有没有写错——不过这个概率很低,毕竟之前正常运行过。数值参数非法:如果
q1.x或者目标值600.5变成了非数值(比如NaN),Tween执行时就会报错。你可以在创建Tween前输出trace(q1.x, 600.5),看看这两个值是不是合法的数字。这种情况可能是其他代码意外修改了q1的x属性,比如给它赋值了字符串或者未定义的变量。组件库未正确包含:如果是在Animate(原Flash)或者Flash Builder中开发,项目设置里可能不小心移除了
fl.transitions相关的组件库。之前正常是因为库被包含,现在可能因为项目重构、设置变更导致这个类库丢失,需要在项目的库路径或组件面板里重新添加这个类库。重复创建Tween导致的冲突:如果在短时间内多次触发这段Tween代码,可能会导致多个Tween同时操作
q1的x属性,极端情况下可能引发内存或对象状态异常。你可以尝试在创建新Tween前,先停止之前的Tween(比如用Tween.removeTweens(q1))来避免冲突。
内容的提问来源于stack exchange,提问作者nabster023

