Actionscript 3 如何引用对象类中的单个帧?

Actionscript 3 如何引用对象类中的单个帧?,actionscript-3,Actionscript 3,所以,我把我的角色电影剪辑放在时间表的第一帧上。当它击中敌人时,电影将在第二帧播放,我在屏幕上有一个游戏。但是,当角色击中敌人时,我在运行时遇到此错误: TypeError: Error #2007: Parameter hitTestObject must be non-null. at flash.display::DisplayObject/_hitTest() at flash.display::DisplayObject/hitTestObject() at C

所以,我把我的角色电影剪辑放在时间表的第一帧上。当它击中敌人时,电影将在第二帧播放,我在屏幕上有一个游戏。但是,当角色击中敌人时,我在运行时遇到此错误:

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()
我调试过,问题似乎出在我的coins类中:

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时;,显然,当我有超过一帧时,我不能使用MovieCliproot

char1是我角色的实例名,cc是硬币计数变量


我是ActionScript的新手,我想知道我哪里做错了。谢谢

错误实际上发生在这条线上

if(hitTestObject(char))
现在的情况是,游戏仍在试图检查屏幕上游戏的碰撞。找不到char1对象,因此它变为null。Null本质上意味着某个东西是空的,所以你不能用它做任何事情。如果您尝试null.something,您将得到一个错误,sometFunctionNull也很可能导致错误

一个快速修复方法是将线路更改为

if(char != null && hitTestObject(char))
正如业力所提到的


但是,以下三个类型错误与您发布的代码无关。它们之所以发生,是因为某些代码行试图执行null.something。CharMovement、ResetBox和EnemyBall函数可能在不应该调用的时候被调用。当游戏结束时,您可能需要删除事件侦听器,或者添加额外的逻辑来检查空值。

参数hitTestObject必须为非空。表示将char传递给函数时为null。您可以通过编写ifchar!=null&&hittestobjectchart非常感谢您,我还删除了事件侦听器,并且没有错误输出。