actionscript 3 - 错误 #2136 - 简单问题
actionscript 3 - Error #2136 - simple issue
这是非常基本的,但为了帮助我理解,请有人解释为什么这不起作用。试图从一个文件调用一个函数到另一个文件,并得到以下错误。
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();
}
}
}
从 class Main 的构造函数中,您正在创建 Enemy 的对象。在 Enemy 的构造函数中,您正在创建 Main 的对象。因此它会继续创建这两个对象,直到 堆栈溢出。它永远不会到达你有 main.test();
的那一行
假设 Main
是您的文档 class,您无法实例化它。这或许可以解释 SWF 无效数据错误。
您尝试做的似乎是从您的 Enemy
访问 Main
上的一个函数。为此,您只需要在 Enemy
class 中引用 Main
。如果将 Enemy
实例添加到显示列表中,您可能可以使用 root
或 parent
来获取对 Main
的引用。您还可以通过 Enemy
class:
的构造函数传递对 Main
的引用
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();
}
}
如果你想从 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);
}
}
}
祝你好运。
这是非常基本的,但为了帮助我理解,请有人解释为什么这不起作用。试图从一个文件调用一个函数到另一个文件,并得到以下错误。
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();
}
}
}
从 class Main 的构造函数中,您正在创建 Enemy 的对象。在 Enemy 的构造函数中,您正在创建 Main 的对象。因此它会继续创建这两个对象,直到 堆栈溢出。它永远不会到达你有 main.test();
假设 Main
是您的文档 class,您无法实例化它。这或许可以解释 SWF 无效数据错误。
您尝试做的似乎是从您的 Enemy
访问 Main
上的一个函数。为此,您只需要在 Enemy
class 中引用 Main
。如果将 Enemy
实例添加到显示列表中,您可能可以使用 root
或 parent
来获取对 Main
的引用。您还可以通过 Enemy
class:
Main
的引用
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();
}
}
如果你想从 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);
}
}
}
祝你好运。