如何引用对象 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.somethingCharMovementResetBoxEnemyBall 函数可能在不应该被调用的时候被调用。您可能需要在游戏结束时移除事件侦听器,或者添加额外的逻辑来检查空值。