如何引用对象 class 中的单个帧?
How to refer to a single frame in a an object class?
所以,我的角色影片剪辑在时间轴的第 1 帧上。当它击中敌人时,电影会进入第 2 帧,在那里我有一个游戏结束屏幕。但是当角色击中敌人时我在运行时得到这个错误:
TypeError: Error #2007: Parameter hitTestObject must be non-null.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at Coinsy/update()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/CharMovement()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/ResetBox()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/EnemyBall()
我调试了一下,好像是我币的问题class:
package
{
import flash.display.*;
import flash.events.*;
public class Coinsy extends MovieClip
{
var char:MovieClip;
var MTL = MovieClip(root);
public function Coinsy()
{
this.addEventListener(Event.ENTER_FRAME, update);
}
function update(event:Event):void
{
char = MTL.char1;
// CC = int(root).CC;
if(hitTestObject(char))
{
this.removeEventListener(Event.ENTER_FRAME, update);
parent.removeChild(this);
MTL.CC++;
}
}
}
}
在 char = MTL.char1;
,显然我不能使用 MovieClip(root)
当我有超过一帧时。
char1 是我角色的实例名称,CC 是硬币计数变量。
我是 ActionScript 的新手,我想知道我哪里做错了。谢谢!
错误实际上发生在这一行
if(hitTestObject(char))
发生的事情是游戏仍在尝试检查游戏结束屏幕上的碰撞。找不到 char1
对象,因此它变为空。 Null 本质上意味着某些东西是空的,所以你不能用它做任何事情。如果你尝试 null.something
你会得到一个错误,并且 someFunction(null)
也很可能会导致错误。
快速解决方法是将行更改为
if(char != null && hitTestObject(char))
正如 Karma 提到的那样。
但是,以下三个类型错误与您发布的代码无关。它们的发生是因为某行代码正在尝试执行 null.something
。 CharMovement
、ResetBox
和 EnemyBall
函数可能在不应该被调用的时候被调用。您可能需要在游戏结束时移除事件侦听器,或者添加额外的逻辑来检查空值。
所以,我的角色影片剪辑在时间轴的第 1 帧上。当它击中敌人时,电影会进入第 2 帧,在那里我有一个游戏结束屏幕。但是当角色击中敌人时我在运行时得到这个错误:
TypeError: Error #2007: Parameter hitTestObject must be non-null.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at Coinsy/update()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/CharMovement()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/ResetBox()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Untitled_2_fla::MainTimeline/EnemyBall()
我调试了一下,好像是我币的问题class:
package
{
import flash.display.*;
import flash.events.*;
public class Coinsy extends MovieClip
{
var char:MovieClip;
var MTL = MovieClip(root);
public function Coinsy()
{
this.addEventListener(Event.ENTER_FRAME, update);
}
function update(event:Event):void
{
char = MTL.char1;
// CC = int(root).CC;
if(hitTestObject(char))
{
this.removeEventListener(Event.ENTER_FRAME, update);
parent.removeChild(this);
MTL.CC++;
}
}
}
}
在 char = MTL.char1;
,显然我不能使用 MovieClip(root)
当我有超过一帧时。
char1 是我角色的实例名称,CC 是硬币计数变量。
我是 ActionScript 的新手,我想知道我哪里做错了。谢谢!
错误实际上发生在这一行
if(hitTestObject(char))
发生的事情是游戏仍在尝试检查游戏结束屏幕上的碰撞。找不到 char1
对象,因此它变为空。 Null 本质上意味着某些东西是空的,所以你不能用它做任何事情。如果你尝试 null.something
你会得到一个错误,并且 someFunction(null)
也很可能会导致错误。
快速解决方法是将行更改为
if(char != null && hitTestObject(char))
正如 Karma 提到的那样。
但是,以下三个类型错误与您发布的代码无关。它们的发生是因为某行代码正在尝试执行 null.something
。 CharMovement
、ResetBox
和 EnemyBall
函数可能在不应该被调用的时候被调用。您可能需要在游戏结束时移除事件侦听器,或者添加额外的逻辑来检查空值。