我目前正在学习使用单独的 .as 文件和类,但是在阅读了很多之后,一切似乎都与我所阅读的不同。我发布这个问题是为了学习,而不仅仅是为了让代码正常工作。这里的例子是我真实项目的经过测试的简化再现。
我的文件“MyApp.fla”有 1 个以形状为背景的框架,DocumentClass 设置为“MyApp”。该库包含一个具有另一个背景形状的 1 帧符号“Page1”,其类设置为“Page1”
MyApp.as:
package {
trace("1: DocumentClass file, before class");
import flash.display.MovieClip;
public class MyApp extends MovieClip {
trace("2: DocumentClass file, in the class")
public var setting1:int = 2; //this is a variable which i want to be accesible to other classes, so to the pages being loaded
private var currentPage:MovieClip; //I wanted to create this var in the constructor, but I'm afraid something will explode again :<
public function MyApp() {
trace("3: DocumentClass file, in constructor function");
currentPage = new Page1;
addChild(currentPage);
}
}
}
第1页.as:
package {
trace("4: Page1 file, before class");
import flash.display.MovieClip;
public class Page1 extends MovieClip {
trace("5: Page1 file, in class, before constructor");
public function Page1() {
trace("6: Page1 file, in constructor")
trace(setting1) //According to everything i read this should work since setting1 is public, but it gives me: "1120 Acces of undefined property setting1" so i commented this out for the output.
trace(root);
trace(stage); //both trace null since i haven't used addChild() yet, but now i dont know how to try to reference my variables through the main timeline.
}
}
}
输出:
- 5:Page1 文件,在类中,在构造函数之前
- 4:第1页文件,课前
- 2:DocumentClass文件,在类中
- 1:DocumentClass文件,上课前
- 3:DocumentClass文件,在构造函数中
- 6:Page1 文件,在构造函数中
- 无效的
- 无效的
虽然两种背景形状都按预期显示,但生成的输出与我的预期完全不同。我的主要问题是:为什么我的痕迹没有排序为 1 -6?
我的下一个问题:为什么 Page1() 构造函数不能引用 public var setting1?,我假设我可以通过将 setting1 作为参数传递给 Page1() 构造函数来解决,但出于学习目的,我避免这样做。