actionscript 3 - 错误#1009从另一个类发出调用函数

时间:2015-01-24 04:36:27

标签: actionscript-3

我无法从其他类调用函数。我想在一个类中调用一个函数来更新另一个类中的分数显示。错误代码是:

TypeError:错误#1009:无法访问空对象引用的属性或方法。     at code.functions :: EnemyYellow()[code \ functions \ EnemyYellow.as:18]     在code :: Main()[\ code \ Main.as:27]

如果有人可以帮助我,我会很感激,我设置了2个基本文件,其中包含导致问题的代码。它通常不是这样设置的,我只是做了这个测试,所以我可以清楚地解释这个问题。

主档案:

package code {

    import flash.display.MovieClip;
    import flash.events.*;
    import code.*;

public class Main extends MovieClip {

    public var _enemy:EnemyYellow;
    public var playerHP:Number;

    public function Main() {

        playerHP = 10;
        _playerHPdisplay.text = playerHP.toString();
        trace(playerHP)

        _enemy = new EnemyYellow;
    }


    public function lowerHP ():void
    {   
        playerHP = playerHP - 1;
        _playerHPdisplay.text = playerHP.toString();
        trace(playerHP)

    }
  }
}

第二档:

package code.functions {

    import flash.display.MovieClip;
    import flash.events.*;
    import code.Main;

public class EnemyYellow extends MovieClip {

    public var _main:Main;

    public function EnemyYellow() {
        _main.lowerHP();
        trace ("done")
    }
  }
}

我也尝试添加_main = new Main;在第二个文件中,但游戏只是加载了黑屏和关于无效数据的错误。

1 个答案:

答案 0 :(得分:0)

首先,你肯定需要"实例化" Main类,这意味着基本上要创建它。

public var _main:Main;

这一行只声明Main类型的变量。但就目前而言,_main的值为null。所以你是对的,你需要打电话:

_main = new Main();

完成此操作后,第一个错误将消失。但是那个MovieClip中的东西仍然含糊不清。像_playerHPdisplay一样。来自哪里?它是舞台上的一个实例还是什么?您刚刚创建了一个全新的对象,它没有任何引用其他对象,TextFields等等。

所以这基本上回答了你当前的问题和问题,但肯定会有更多:)