0
    public function starttank(event:MouseEvent):void
    {
        var Tankdrive:TankDrive = new TankDrive();
        Tankdrive.tankstart();
    }

这是说该函数中的某些内容包含无效数据。

我不知道它是什么,我检查了 TankDrive 和 tankstart(); 两者都是正确的, tankstart() 是一个公共函数......

我被难住了...

编辑:错误:错误 #2136:SWF 文件 file:///C|/Users/BigRed/Desktop/TankDrive/TankDrive.swf 包含无效数据。在主菜单/starttank()

这就是错误...

而上面的 starttank() 函数还是一样的……

4

2 回答 2

0

问题是您的实例名称也是类名称(并且编译器假定您打算引用后者)。您可能打算将 TankDrive 变量称为“tankDrive”,因此将代码片段更改为以下内容可能会有所帮助:

public function starttank(event:MouseEvent):void
{
    var tankdrive:TankDrive = new TankDrive();
    tankdrive.tankstart();
}

通常并建议所有公共变量名称以小写字母开头,私有变量以下划线开头,类名以大写字母开头,尽管这不是由语言本身强制执行的,所以这种事情可能会发生。

以下是一些关于常规变量和函数命名的指南,可以帮助您跟踪每个变量和函数应该做什么:

http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/variables.html http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/functions.html

祝你好运!

于 2013-04-14T22:47:50.517 回答
0

好的,我查看了文件。

我对你想要做什么感到困惑。

您的 Document 类是 TankDrive,它会创建一个 mainmenu 实例,当您单击一个按钮时,它会创建另一个 TankDrive 实例。这不是我认为您想要做的,或者您认为它允许您访问您的文档类。 - 它不是。它试图创建一个全新的游戏实例。

简而言之,您的设计没有意义,并且还与导致该错误的文档类发生冲突。

快速的解决方案是不要在主菜单类中为单击设置 EventListener 和处理程序,然后调用文档类的 tankstart() 方法,而不是尝试创建 TankDrive 的新实例。

首先将该侦听器移动到文档类中并像这样修改:

main.enterTank.addEventListener(MouseEvent.CLICK, starttank);

然后将您的处理程序移动到 TankDrive 类并修改如下:

public function starttank(event:MouseEvent):void
{
         tankstart();
}

这不是做到这一点的唯一方法,也不是我真正想做的方式。但我认为讨论超出了这个问题的范围。

如果您愿意,可以通过prototype.in.training@gmail.com 与我联系以获取更多详细信息。

于 2013-04-15T07:34:46.323 回答