1

flex mxml ファイルに外部 actionscript ファイルを含めると、使用する方法に応じてコンパイル時に異なる動作が発生します。source 属性または include ステートメントを含む mx スクリプト タグを使用してから、ファイルをコンパイルすると、次のようなエラーが発生します。

エラー: パッケージはネストできません。

インポートを使用すると、これらのエラーはなくなり、ファイルはコンパイルされますが、クラスをインスタンス化しようとすると問題が発生します。

    import lib.journal;
    public var testing:journal = new journal();
    testing.init();

与える:

エラー: 未定義のプロパティ テストへのアクセス。

ここで何が起こっているのか誰でも説明できますか? ファイルをインポートするのではなく含めると、パッケージとスコープにどのような影響がありますか?

ありがとう、

4

3 に答える 3

4

より一般的な質問に答えるには、インポートは外部ファイルを含めるための推奨される方法です。私の意見では、includeステートメントは、何かがうまくいかなかった場合にデバッグが少し難しくなり、通常はコードを読んだり理解したりするのが難しくなるため、他に何もしない場合にのみ使用する必要があります。import何と何をするかについてのアサフの説明includeは正しい。

そして、あなたが抱えていると思われるより具体的な問題については、おそらく ブロックtesting.init();内で正しいことをしようとしているでしょう<script>-それをメソッドに入れてみてください。importステートメントやメンバー宣言 (変数、関数) などはスクリプト ブロックに直接含め、関数内にはこのようなステートメントのみを含める必要があります。

このエラー メッセージが表示されるのは、このオブジェクトのメソッドを呼び出しているときにinit()まだ作成されていないためです。このステートメントは、MXML ファイルが表すクラスの定義が読み込まれるときに実行されます。あなたが望むのは、このクラスの特定のインスタンスが作成されたときにそれを実行することです.クラスのコンストラクターでそれを呼び出すことでそれを行うことができます(私が知る限り、これはあなたが書いているときは不可能です. MXML を使用するクラスなので、以下をお読みください :) または、たとえばFlexEvent.CREATION_COMPLETE(またはcreationCompleteMXML タグ属性に関して) イベントのハンドラー関数内 (以下の例を参照)。

次のようなことを試してください:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml"
    width="800" height="600"
    creationComplete="creationCompleteHandler();"
>
    <mx:Script>
        <![CDATA[

        import lib.Journal;

        public var testing:Journal = new Journal();

        private function creationCompleteHandler():void
        {
            testing.init();
        }

        ]]>
    </mx:Script>

</mx:Application>
于 2009-02-21T17:16:16.093 に答える
2

Import を使用すると、インポートされたファイルの public 宣言にアクセスできます。

インクルードは、そこに入力したかのように、as3 ファイルの内容をインクルードの場所に植えます。

「 ActionScript コードの比較、インクルード、およびインポート」のマニュアルを参照してください。

于 2009-02-21T16:44:14.503 に答える
0

これを試して:

<mx:Script>
    <![CDATA[

    import lib.Journal;

    public var testing:Journal;

    private function creationCompleteHandler():void
    {
        testing = new Journal();
    }

    ]]>
</mx:Script>

乾杯、ダーク

于 2009-07-22T19:44:44.530 に答える