1

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 を使用してムービーをフラッシュしてデバッグすると、次のエラー メッセージが表示されます。考えられるあらゆる方法を試したので、これまでに達成したことの概要を以下に示します。

var t = new TestRunner();

メッセージ: 1180: 未定義の可能性があるメソッド TestRunner への呼び出し。

var t = new regressiontest.TestRunner();

メッセージ:

root.as: 1120: 未定義のプロパティへのアクセス、regressiontest.

regressiontest.as: 5001: パッケージ 'regressiontest' の名前は、このファイルの場所を反映していません。このファイル内のパッケージ定義の名前を変更するか、ファイルを移動してください。フォルダー\regressiontest.as

gressiontest.as: 5008: 定義 'TestRunner' の名前は、このファイルの場所を反映していません。このファイル内の定義の名前を変更するか、ファイルの名前を変更してください。フォルダー\regressiontest.as

import regressiontest.TestRunner;
var t = new TestRunner();

root.as、19行目: 1172: 定義のregressiontest:TestRunnerが見つかりませんでした。

root.as、20 行目: 1180: 未定義の可能性があるメソッド TestRunner への呼び出し。

私にとって最も紛らわしいのは、Flash が何らかの形で、regressiontest.as のクラス定義を取得しているように見えることです。次のような明らかなエラーを入れると、

public function TestRunner() {
    shoelace('Hello');
}

これを使用して、クラスのオブジェクトをインスタンス化します。

var t:TestRunner = new regressiontest.TestRunner();

それから私はメッセージを受け取ります:

gressiontest.as: 1180: 未定義の可能性のあるメソッド shoelace への呼び出し。

インスタンス化が問題を引き起こしていると考える人もいるかもしれません。しかし、靴紐のコードを trace に設定してインスタンス化を終了すると、次のメッセージが表示されます。

メッセージ シーン 1、レイヤー 'AS'、フレーム 1: 1046: タイプが見つからないか、コンパイル時の定数ではありません: TestRunner。

root.as: 1120: 未定義のプロパティへのアクセス、regressiontest.

regressiontest.as: 5001: パッケージ 'regressiontest' の名前は、このファイルの場所を反映していません。このファイル内のパッケージ定義の名前を変更するか、ファイルを移動してください。フォルダー\regressiontest.as

gressiontest.as: 5008: 定義 'TestRunner' の名前は、このファイルの場所を反映していません。このファイル内の定義の名前を変更するか、ファイルの名前を変更してください。フォルダー\regressiontest.as

パッケージ内のファイルの名前を変更してみました、パッケージの名前を変更してみました、インポートの回帰テストでインポートしてみました。等々。私は何が欠けていますか?

  • ファイル名を何に設定する必要がありますか? パッケージ名またはクラス名と一致する必要がありますか?
  • クレイジーなキャメルケースルールがありませんか?
  • パッケージ名またはそのようなクレイジーなものに最大長はありますか?
  • フラッシュまたは FLA ファイルを正しく構成するのを忘れましたか?
  • いくつかの魔法のキーワードがありませんか?
  • スクリプトの先頭にあるインクルードまたはインポートによる副作用はありますか?

これらの手順を再現でき、github 経由でパッケージを提供できます。

ドイツのハイデルベルクから無知な挨拶で、事前にありがとう

ヨハネス

4

1 に答える 1

1

私が見たように、TestRunnerはクラスでregressiontestあり、パッケージであるため、クラスをインポートする必要があります。

import regressiontest.TestRunner;
var t:TestRunner = TestRunner();

また、この変更を行う必要があります。

  1. ファイル名はクラスとまったく同じでなければなりませんregressiontest.asTestRunner.as
  2. パッケージ用のフォルダーを作成して呼び出しregressiontest、中に入れますTestRunner.as
于 2012-12-31T14:37:17.797 に答える