2

ActionScript 3には、クラスのプライベートまたは保護されたメンバーを変更する方法があります(ハック-おそらく角括弧を介して、おそらくオブジェクトのクローンを介して、おそらくプロトタイプを介して、おそらく名前空間を介して...)?

たとえばIconToast、someLibrary.swc によって提供されるクラスがあり、それが

    protected var windowOptions:WindowOptions;

どうにか変えられませんか?たとえば、次のような多くのことを試しました。

        var errorToast:IconToast = new IconToast();
        errorToast.addButton("Dismiss");
        errorToast.message = "Error when connecting";
        errorToast['windowOptions'].timeout = 10 * 1000;
        errorToast.show();

(実行時エラーReferenceError: Error #1069: Property windowOptions not found on IconToast and there is no default value が表示されます)。

4

2 に答える 2

6

これを行うには、基本クラスを拡張し、プライベート/保護されたメソッド/プロパティなどへのパブリック アクセスを許可します。

public class MyIconToast extends IconToast
{
    public function getWindowOptions():WindowOptions
    {
        return windowOptions;//here you can access protected (not private though:);
    }
}

プライベートの場合は不可能かもしれませんが、上記のソリューションと同様にある程度行うことができます

よろしくお願いします

于 2012-06-20T12:56:18.627 に答える
1

いいえ、修飾子を直接変更する方法はありません (そのため、public、protected、private として定義されていますよね?)。Lukasz 'Severiaan' Grela の解決策は問題ありませんが、より良いものになる可能性があります。getter/setter を使用して読み取り/書き込み関数を取得します。

public function set windowOption(option:int):void;

public function get windowOption():int;

また、プライベート属性はそのクラスにのみ属しているため、SWC にパックされている場合、それらのいずれも表示されません:D.

于 2012-06-20T15:31:48.087 に答える