这是非常基本的,但为了帮助我理解,有人可以解释为什么这不起作用。尝试将一个函数从一个文件调用到另一个文件,并获得以下错误。
Error: Error #2136: The SWF file file:///test/Main.swf contains invalid data.
at code::Main()[C:\Users\Luke\Desktop\test\code\Main.as:12]
Error opening URL 'file:///test/Main.swf'
Main.as
package code {
import flash.display.MovieClip;
import flash.events.*;
import code.Enemy;
public class Main extends MovieClip
{
public function Main()
{
var enemy:Enemy = new Enemy();
}
public function test():void
{
trace("Test");
}
}
}
Enemy.as
package code {
import flash.display.MovieClip;
import flash.events.*;
import code.Main;
public class Enemy extends Main {
public function Enemy() {
var main:Main = new Main();
main.test();
}
}
}
答案 0 :(得分:1)
假设Main
是您的文档类,则无法实例化它。这可能解释了SWF无效数据错误。
您尝试执行的操作是从Main
访问Enemy
上的某个功能。要做到这一点,您只需要在Main
课程内引用Enemy
。如果您将Enemy
实例添加到显示列表,则可以使用root
或parent
来获取对Main
的引用。您还可以通过Main
类的构造函数传递对Enemy
的引用:
public class Main {
public function Main() {
new Enemy(this);
}
public function test():void {
trace("test");
}
}
public class Enemy {
public function Enemy(main:Main) {
main.test();
}
}
答案 1 :(得分:0)
从 Main 类的构造函数中创建 Enemy 的对象。在 Enemy 的构造函数中,您正在创建 Main 的Object。因此,它会继续创建这两个对象,直到堆栈溢出。它永远不会到达main.test();
答案 2 :(得分:0)
如果您想从main.as获取数据,则可以使用静态变量。
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
// i well get this var in my Enemy as.
public var i:uint=1021;
public function txtuto() {
// constructor code
}
}
}`
// the Enemy.as
`package {
import flash.display.MovieClip;
public class Enemy extends MovieClip {
public static var tx:Main = new Main;
public function Enemy() {
trace(tx.i);
}
}
}
祝你好运。