Actionscript 3 在AdobeFlashCS3中导入包-来自;访问未定义的财产”;毫无意义

Actionscript 3 在AdobeFlashCS3中导入包-来自;访问未定义的财产”;毫无意义,actionscript-3,flash,adobe,linker-errors,Actionscript 3,Flash,Adobe,Linker Errors,我继承了一个FlashCS3遗留应用程序,我正在尝试对它进行一些重构。最终一切都应该转移到JS上,但现在我想开始使用我所拥有的,而不是尝试完全重写。首先,我想安装一个小的回归测试 我试图在它自己的软件包中设置测试,以减少它与原始应用程序之间的接缝。这个应用程序使用了很多全局变量,我不想干扰它们 我无法让回归测试正常工作,因为我不知道如何正确导入包。我非常确定我正在监督一些显而易见的事情 我的folderstructure如下所示: +- ascripts | +-- dependenci

我继承了一个FlashCS3遗留应用程序,我正在尝试对它进行一些重构。最终一切都应该转移到JS上,但现在我想开始使用我所拥有的,而不是尝试完全重写。首先,我想安装一个小的回归测试

我试图在它自己的软件包中设置测试,以减少它与原始应用程序之间的接缝。这个应用程序使用了很多全局变量,我不想干扰它们

我无法让回归测试正常工作,因为我不知道如何正确导入包。我非常确定我正在监督一些显而易见的事情

我的folderstructure如下所示:

+- 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可能会有副作用吗
我可以复制这些步骤,并通过github提供包

提前感谢您,德国海德堡向您致以莫名其妙的问候


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,这就成功了!我曾试图像这样实例化这个类,但一开始它不起作用。将文件放在自己的文件夹中就成功了!很好,非常感谢。这很容易解决了我的问题,我现在可以继续我的工作了@很高兴为您服务:)。