actionscript 3 - 错误#2136

时间:2015-01-24 18:52:48

标签: actionscript-3 flash

所以我试着理解如何从另一个类的一个类调用一个函数。我得到了一些错误,我想知道是否有人可以解释我在这里做错了什么。

主档案:

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也是游戏加载时舞台上的一个文本框。

1 个答案:

答案 0 :(得分:0)

如果没有为_main赋值,则为null。如果你没有为它分配新的Main(),那就是你收到#1009的原因。

但是,您也不想创建新的Main对象。 主类代表应用程序,一般来说,你没有在项目中明确地实例化它。

为了使你的代码有效,你必须将Main的引用传递给敌人类。

更好的方法是让敌人派遣派遣事件,以便可以通知主阶级“造成一些伤害”。然而,这不会在敌人的构造者中起作用。

考虑一下你的包名是否有意义。几乎所有的包都包含代码,这使得“代码”成为一个信息量不大的名称。 “函数”包中包含 EnemyYellow,它似乎不太合适。