Actionscript 3 在AdobeFlashCS3中导入包-来自;访问未定义的财产”;毫无意义
我继承了一个FlashCS3遗留应用程序,我正在尝试对它进行一些重构。最终一切都应该转移到JS上,但现在我想开始使用我所拥有的,而不是尝试完全重写。首先,我想安装一个小的回归测试 我试图在它自己的软件包中设置测试,以减少它与原始应用程序之间的接缝。这个应用程序使用了很多全局变量,我不想干扰它们 我无法让回归测试正常工作,因为我不知道如何正确导入包。我非常确定我正在监督一些显而易见的事情 我的folderstructure如下所示:Actionscript 3 在AdobeFlashCS3中导入包-来自;访问未定义的财产”;毫无意义,actionscript-3,flash,adobe,linker-errors,Actionscript 3,Flash,Adobe,Linker Errors,我继承了一个FlashCS3遗留应用程序,我正在尝试对它进行一些重构。最终一切都应该转移到JS上,但现在我想开始使用我所拥有的,而不是尝试完全重写。首先,我想安装一个小的回归测试 我试图在它自己的软件包中设置测试,以减少它与原始应用程序之间的接缝。这个应用程序使用了很多全局变量,我不想干扰它们 我无法让回归测试正常工作,因为我不知道如何正确导入包。我非常确定我正在监督一些显而易见的事情 我的folderstructure如下所示: +- ascripts | +-- dependenci
+- ascripts
| +-- dependencies.as
|
+- root.fla
+- initialize.as
+- regressiontest.as
root.fla是我唯一的fla文件。它只包含:
stop();
include "initialize.as" // Let's go outside!
初始化。as包含所有魔法。我使用这个外部文件,所以我不必使用flashide(因为它是最糟糕的编码IDE)。在那里我有这样一个:
// ...
import fl.controls.ComboBox;
include "ascripts/dependencies.as"
var t = new regressiontest.TestRunner(); // 1.
// ...
在1。我正在尝试实例化我的回归测试类。可以在文件回归测试中找到它。如图所示:
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
regressiontest.as:5001:包“regressiontest”的名称不反映此文件的位置。请在此文件中更改包定义的名称,或移动文件。文件夹\regressiontest.as
import regressiontest.TestRunner;
var t = new TestRunner();
regressiontest.as:5008:定义“TestRunner”的名称不反映此文件的位置。请更改此文件中定义的名称,或重命名该文件。文件夹\regressiontest.as
import regressiontest.TestRunner;
var t = new TestRunner();
找不到root.as,第19行:1172:定义回归测试:TestRunner
root.as,第20行:1180:调用可能未定义的方法TestRunner
var t = new regressiontest.TestRunner();
最让我困惑的是,Flash似乎以某种方式获取了regressiontest.as中的类定义。当我把一个明显的错误,如
public function TestRunner() {
shoelace('Hello');
}
并使用它来实例化类的一个对象:
var t:TestRunner = new regressiontest.TestRunner();
然后我得到了消息:
regressiontest.as:1180:调用可能未定义的方法shoelace
现在有人可能会认为实例化导致了问题。但是,当我将shoelace中的代码设置为trace并离开实例化时,我得到以下消息:
消息
场景1,层“AS”,第1帧:1046:Type未找到或不是编译时常量:TestRunner
var t = new regressiontest.TestRunner();
root.as:1120:访问未定义的属性regressiontest
regressiontest.as:5001:包“regressiontest”的名称不反映此文件的位置。请在此文件中更改包定义的名称,或移动文件。文件夹\regressiontest.as
import regressiontest.TestRunner;
var t = new TestRunner();
regressiontest.as:5008:定义“TestRunner”的名称不反映此文件的位置。请更改此文件中定义的名称,或重命名该文件。文件夹\regressiontest.as
import regressiontest.TestRunner;
var t = new TestRunner();
我尝试重命名包中的文件,我尝试重命名包,我尝试使用import regressiontest导入。*;等等我错过了什么
- 我需要将文件名设置为什么?它需要与包名或类名匹配吗李>
- 我是不是错过了一些疯狂的骆驼案规则李>
- 包名或类似疯狂的东西是否有最大长度李>
- 我忘记正确配置flash或FLA文件了吗李>
- 我是不是遗漏了一些神奇的关键词
- 脚本开头的include或imports可能会有副作用吗李>
Johannes在我看来,
TestRunner
是类,regressiontest
是包,因此需要导入类
import regressiontest.TestRunner;
var t:TestRunner = TestRunner();
此外,您还必须进行此更改
TestRunner.as
reg退测试
,放入TestRunner.as
在我看来,
TestRunner
是类,regressiontest
是包,因此需要导入类
import regressiontest.TestRunner;
var t:TestRunner = TestRunner();
此外,您还必须进行此更改
TestRunner.as
reg退测试
,放入TestRunner.as
亲爱的@fenixkim,这就成功了!我曾试图像这样实例化这个类,但一开始它不起作用。将文件放在自己的文件夹中就成功了!很好,非常感谢。这很容易解决了我的问题,我现在可以继续我的工作了@JohannesHofmeister我很高兴为您服务:)。亲爱的@fenixkim,这就成功了!我曾试图像这样实例化这个类,但一开始它不起作用。将文件放在自己的文件夹中就成功了!很好,非常感谢。这很容易解决了我的问题,我现在可以继续我的工作了@很高兴为您服务:)。