错误#2136:swf包含无效数据

时间:2013-04-14 22:08:25

标签: actionscript-3 flash

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

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

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

我很难过......

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

那是错误......

在starttank()函数之上仍然是相同的......

2 个答案:

答案 0 :(得分: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

祝你好运!

答案 1 :(得分: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与我联系,了解更多详情。