我继承了一个 Flash CS3 旧版应用程序,我正在尝试对其进行一些重构。最终一切都应该转移到 JS,但现在我想开始使用我所拥有的,而不是尝试完全重写。首先,我想安装一个小回归测试。
我正在尝试在它自己的包中设置测试,以减少它与原始应用程序的接缝。该应用程序使用了很多全局变量,我不希望干扰这些。
我无法进行回归测试,因为我不知道如何正确导入包。我很确定我正在监督一些明显的事情。
我的文件夹结构如下所示:
+- ascripts
| +-- dependencies.as
|
+- root.fla
+- initialize.as
+- regressiontest.as
root.fla是我唯一的 fla 文件。它只包含:
stop();
include "initialize.as" // Let's go outside!
initialize.as包含所有的魔法。我正在使用这个外部文件,所以我不必使用 Flash IDE(因为它是最糟糕的编码 IDE)。在那里我有这个:
// ...
import fl.controls.ComboBox;
include "ascripts/dependencies.as"
var t = new regressiontest.TestRunner(); // 1.
// ...
在1.我正在尝试实例化我的回归测试类。它可以在文件regressiontest.as中找到,如下所示:
package regressiontest {
public class TestRunner {
public function TestRunner() {
trace('Hello');
// Actual Test Code Here ...
}
}
}
因此,现在当我使用 Strg+Shift+Enter 进行 Flash 和调试电影时,我收到以下错误消息。我尝试了所有我能想到的方法,所以这里是我到目前为止所取得的成就的概述:
var t = new TestRunner();
消息:1180:调用可能未定义的方法 TestRunner。
var t = new regressiontest.TestRunner();
留言:
root.as: 1120: 未定义属性回归测试的访问。
regressiontest.as: 5001: 包'regressiontest'的名称不反映这个文件的位置。请更改此文件中的包定义名称,或移动该文件。文件夹\regressiontest.as
regressiontest.as: 5008: 定义“TestRunner”的名称不反映该文件的位置。请更改此文件中的定义名称,或重命名文件。文件夹\regressiontest.as
import regressiontest.TestRunner;
var t = new TestRunner();
root.as,第 19 行:1172:定义回归测试:找不到 TestRunner。
root.as,第 20 行:1180:调用可能未定义的方法 TestRunner。
最让我困惑的是,Flash 似乎以某种方式在 regressiontest.as 中获取了类定义。当我提出一个明显的错误时,例如
public function TestRunner() {
shoelace('Hello');
}
并使用它来实例化类的对象:
var t:TestRunner = new regressiontest.TestRunner();
然后我收到消息:
regressiontest.as: 1180: 调用可能未定义的方法 shoelace。
现在人们可能会认为实例化会导致问题。但是,当我将代码从鞋带设置为跟踪并离开实例化时,我收到以下消息:
消息 场景 1,层“AS”,第 1 帧:1046:找不到类型或不是编译时常量:TestRunner。
root.as: 1120: 未定义属性回归测试的访问。
regressiontest.as: 5001: 包'regressiontest'的名称不反映这个文件的位置。请更改此文件中的包定义名称,或移动该文件。文件夹\regressiontest.as
regressiontest.as: 5008: 定义“TestRunner”的名称不反映该文件的位置。请更改此文件中的定义名称,或重命名文件。文件夹\regressiontest.as
我尝试重命名包中的文件,尝试重命名包,尝试使用 import regressiontest.* 导入;等等。我错过了什么?
- 我需要将文件名设置为什么?是否需要匹配 PACKAGE NAME 或 CLASS NAME?
- 我错过了一些疯狂的骆驼案规则吗?
- 包装名称或类似的东西是否有最大长度?
- 我是否忘记正确配置闪存或 FLA 文件?
- 我错过了一些神奇的关键字吗?
- 我的脚本开头的包含或导入可能会产生副作用吗?
我可以重现这些步骤,并且可以通过 github 提供包。
提前谢谢你,来自德国海德堡的无知问候
约翰内斯