所以我试着理解如何从另一个类的一个类调用一个函数。我得到了一些错误,我想知道是否有人可以解释我在这里做错了什么。
主档案:
package code {
import flash.display.MovieClip;
import flash.events.*;
import code.*;
import code.functions.*;
public class Main extends MovieClip {
public var _playerHP:Number;
public var _enemyYellow:EnemyYellow;
public function Main() {
_enemyYellow = new EnemyYellow;
_playerHP = 10;
_playerHPdisplay.text = _playerHP.toString();
trace("loaded")
}
public function lowerHP ():void
{
_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 = new Main;
_main.lowerHP();
trace ("test")
}
}
}
然后将加载黑屏并出现以下错误:
Error: Error #2136: The SWF file file:///test/Main.swf contains invalid data.
at code.functions::EnemyYellow()[test\code\functions\EnemyYellow.as:15]
at code::Main()[test\code\Main.as:16]
Error opening URL 'file:///test/Main.swf'
然而,如果我删除_enemyYellow = new EnemyYellow;从它加载的主文件,但没有加载第二个文件。
如果我删除_main = new Main;从第二个文件,游戏再次加载,但它没有调用较低的HP功能,我得到以下错误
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at code.functions::EnemyYellow()[test\code\functions\EnemyYellow.as:16]
at code::Main()[test\code\Main.as:16]
如果有人可以帮助我,我们将不胜感激。我只是试图了解如何从另一个文件调用函数..
_playerHPdisplay.text也是游戏加载时舞台上的一个文本框。
答案 0 :(得分:0)
如果没有为_main赋值,则为null。如果你没有为它分配新的Main(),那就是你收到#1009的原因。
但是,您也不想创建新的Main对象。 主类代表应用程序,一般来说,你没有在项目中明确地实例化它。
为了使你的代码有效,你必须将Main的引用传递给敌人类。
更好的方法是让敌人派遣派遣事件,以便可以通知主阶级“造成一些伤害”。然而,这不会在敌人的构造者中起作用。
考虑一下你的包名是否有意义。几乎所有的包都包含代码,这使得“代码”成为一个信息量不大的名称。 “函数”包中包含类 EnemyYellow,它似乎不太合适。