0

私はFlashActionScript3のカスタムライブラリに取り組んでおり、追加したい関数がいくつかありますArray.prototype

.asライブラリディレクトリ内のフォルダ内の別のファイルに拡張子を配置しましたが、ドキュメントクラスから呼び出しを行うと、ライブラリのソースパスではなくinclude、ファイルの場所を基準にしてインクルードを実行しようとします。.fla

Source Path:の下の値にlibパスをすでに追加しました。ActionScript3 Advanced Settingsこれは、私のimportステートメントで機能します。

includeパスをライブラリのパスに対して相対的なものにするにはどうすればよいですか?

dir構造:

flash/
  lib/libname/inc/array.as
  projectname/project.fla

動作しない(ただし動作​​するはずの)インクルード:

include "libname/inc/array.as";

それは機能しますが、プロジェクトを別の場所に移動すると移植性がなくなります。

include "../lib/libname/inc/array.as";
4

1 に答える 1

0

includeディレクティブをどのように呼び出しているかを理解しました。

.flaドキュメントクラスはプロジェクトに固有のクラスであるため、ファイルと同じディレクトリに保存しました。ドキュメントクラスにはincludeディレクティブが含まれていましたが、実際に拡張Array関数を使用していたクラスは内にありlib/libnameました。

拡張機能を必要とincludeするファイルにディレクティブを移動すると、呼び出し元のクラスの場所を基準にしてディレクティブを呼び出すことができました。これにより、ファイルが内にあるため、使用できるようになりました。.asincludeinclude "../inc/array.as";.aslib/libname/utils/ClassName.as

したがって、この問題に対する答えは、インクルードパスがプロジェクトではなく、呼び出し元のスクリプトの場所に相対的であるということです。これは、構造が保持されるため、ライブラリ内のすべてのスクリプトにライブラリの機能を問題なく含めることができることを意味します。

于 2011-03-04T23:55:30.537 に答える