2

こんにちは、パッケージレス () AS3 クラスで、ファイル内のメイン クラスのプライベート メソッドを呼び出すことができるかどうか疑問に思っています。例えば:

package demo
{
    public class MyDemoClass
    {
        var helper:FriendlyHelperClass = new FriendlyHelperClass(this)
    }

    private function methodToCall():void
    {
        ...
    }
}

public class FriendlyHelperClass
{
    public function FriendlyHelperClass(demo:MyDemoClass)
    {
        demo.methodToCall()
    }
}

MyDemoClass のプライベート メンバーであるため、FriendlyHelperClass からの methodToCall() の呼び出しは失敗します。MyDemoClass を拡張せずに FriendlyHelperClass から methodToCall() メソッドを呼び出す方法はありますか。

基本的に、Java が持つ内部クラスの機能、またはある種の C++ スタイルのフレンド クラスを探しています。

4

3 に答える 3

2

短い答え:いいえ。

ActionScript のクラスの外部からプライベート メンバーにアクセスすることはできません。できることは、プライベート スコープの代わりに名前空間を使用することです。これにより、一部のメンバーが選択したクラスにアクセスできるようになります。これは、AS3 で得られる最も近いフレンド クラスです。

于 2009-09-29T22:17:10.600 に答える
0

残念ながらそれは不可能ですが、クラスを動的にすると、プログラムの実行中にクラスを編集でき、場合によってはいくつかの便利な関数をクラスに追加して、プライベート関数にアクセスできます。私はそれを試していません。

動的クラス

于 2009-09-28T14:15:42.830 に答える
0

コードをテストせずに、完全な問題を知りません。必要な関数を組み込みクラスにコールバックとして渡してみることができます。例えば、

helper.methodToCallCallback = this.methodToCall;

次に、FriendlyHelperClass 内:

this.methodToCallCallback();
于 2009-09-29T22:35:55.493 に答える