我无法从其他类调用函数。我想在一个类中调用一个函数来更新另一个类中的分数显示。错误代码是:
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;在第二个文件中,但游戏只是加载了黑屏和关于无效数据的错误。
答案 0 :(得分:0)
首先,你肯定需要"实例化" Main
类,这意味着基本上要创建它。
public var _main:Main;
这一行只声明将是Main
类型的变量。但就目前而言,_main
的值为null
。所以你是对的,你需要打电话:
_main = new Main();
完成此操作后,第一个错误将消失。但是那个MovieClip中的东西仍然含糊不清。像_playerHPdisplay
一样。来自哪里?它是舞台上的一个实例还是什么?您刚刚创建了一个全新的对象,它没有任何引用其他对象,TextFields等等。
所以这基本上回答了你当前的问题和问题,但肯定会有更多:)