Actionscript 3 从另一个类调用一个类的movieclip,错误#1009

Actionscript 3 从另一个类调用一个类的movieclip,错误#1009,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我得到一个错误:空对象引用的方法。我很困惑,不知道真正的原因是什么。 因此,我在舞台上得到了一个player movieClip,其中有一个“player_mc”实例,它将通过我的文档类进入player类。 玩家。作为 import flash.display.*; import flash.events.*; public class Player extends MovieClip { public var myPlayer:MovieClip; public func

我得到一个错误:空对象引用的方法。我很困惑,不知道真正的原因是什么。
因此,我在舞台上得到了一个player movieClip,其中有一个“player_mc”实例,它将通过我的文档类进入player类。
玩家。作为

import flash.display.*;
import flash.events.*;


public class Player extends MovieClip
{
    public var myPlayer:MovieClip;

    public function Player(player:MovieClip)
    {
        myPlayer = player;

        addEventListener(Event.ENTER_FRAME,on_enter);
    }
import flash.display.*;
import Components.Player.Player;

public class Game_Main extends MovieClip
{

    public var player:Player;


    public function Game_Main()
    {
        player = new Player(player_mc);


    }

}
文档。作为

import flash.display.*;
import flash.events.*;


public class Player extends MovieClip
{
    public var myPlayer:MovieClip;

    public function Player(player:MovieClip)
    {
        myPlayer = player;

        addEventListener(Event.ENTER_FRAME,on_enter);
    }
import flash.display.*;
import Components.Player.Player;

public class Game_Main extends MovieClip
{

    public var player:Player;


    public function Game_Main()
    {
        player = new Player(player_mc);


    }

}
现在我想问题就出在这里。我在舞台上有一个绿色的敌人电影剪辑,里面有基级敌人。
敌人。作为

import flash.display.MovieClip;
import Components.Player.Player;
import flash.events.Event;

public class Enemy extends MovieClip
{
    var theplayer:Player;


    public function Enemy()
    {

        this.addEventListener(Event.ENTER_FRAME,on_enter);
    }

    public function on_enter(e:Event):void
    {
        if (this.hitTestObject(theplayer.myPlayer)) //calls player_mc from Player class
        {
            trace("hi");
        }


    }



}
我喜欢在敌人的功能上做的是,当敌人与“player_mc”(在舞台上)碰撞时,它会做一些事情。也许我的代码错了。

如有任何帮助/提示,将不胜感激。谢谢

在你的敌人身上

var theplayer:Player;
未初始化。它是私有的,因此不能从外部定义它。这意味着例外来自这里

this.hitTestObject(theplayer.myPlayer)
您正试图从null调用
myPlayer

在构造敌方类时尝试定义此变量


为了防止出现空异常,您可以检查该层是否为空

public function on_enter(e:Event):void
{
    if (theplayer && this.hitTestObject(theplayer.myPlayer)) 
    {
        trace("hi");
    }
}

为了扩展ZuyEL所说的内容,您的变量没有在您的敌人类中全局定义,因为您只是在敌人函数中添加了一个var。相反,请执行以下操作

public var thePlayer:Player;

在你的敌人职业结束后,在敌人行动之前写下以上内容。现在它可供全班使用,以后调用时不再为空。

我知道这很愚蠢,但你能告诉我你的意思吗?我最近只是在学习as3,很抱歉我太笨了,没什么好道歉的。更改玩家:玩家到<代码>公共玩家:玩家