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()函数之上仍然是相同的......
答案 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与我联系,了解更多详情。