0

そのため、文字列を取り込んで、ボタンの動的テキストボックスをその文字列に設定するメソッドがあります。

public function setText(caption:String) {
  this.btext.text = caption;
}

このメソッドが 1119 エラーを生成する理由がよくわかりません。
Access of a possibly undefined property btext through a reference with static type Button.as

ダイナミック テキスト ボックスのインスタンス名は でbtext、テキスト ボックスを削除して新しいテキスト ボックスを作成しようとしましたが、それでも 1119 エラーが発生します。また、別のスタックの質問を読みましたが、this['btext'].text = caption;それを試してみると、多くの実行時エラーが発生しました。

基本的に、私は何を間違っていますか?
助けてくれてありがとう。

編集

これが私が使用しているコードです。ボタンのインスタンスを作成してステージに追加し、このコードを使用して配列に保存します。

ボタンを作成するコード

this.buttonArray.push(this.addChild(weaponButton));

Button.as

package  {

    import flash.display.MovieClip;
    import flash.filters.*;

    public class Button extends MovieClip {

        public function Button() {

        }

        public function setPosition(xpos:int, ypos:int) {
            this.x = xpos;
            this.y = ypos;
        }

        public function setScale(xScale:Number, yScale:Number) {
            this.scaleX = xScale;
            this.scaleY = yScale;
        }

        public function addDropShadow():Array {
            var dropShadow:DropShadowFilter = new DropShadowFilter(2,45,0, 1,4,4,1,1,true);
            return [dropShadow];
        }

        public function removeDropShadow():Array {
            return null;
        }

        public function setText(caption:String) {
            this.btext.text = caption;
        }
    }

}
4

2 に答える 2

2

あなたが述べたように、btextはオブジェクトのインスタンス名です。ここでは、btext がライブラリで作成したオブジェクトであると想定しています。
あなたのクラスでは、あなたは2つのことを間違っています。それでは、あなたの方法を調べてみましょう。

public function setText(caption:String) {
  this.btext.text = caption;
}

最初に間違っているのは、「これ」を使用していることです。「これ」は、現在のクラスの現在のインスタンスへの参照です。そして、btext はそのインスタンスのプロパティであると言っています。ライブラリで btext をオブジェクトとして定義したからではないと私は推測しています。これにより、取得しているプロパティが未定義のエラーが発生します。

手元にある 2 番目の問題は、「では、クラスで btext を参照するにはどうすればよいですか」と尋ねようとしていることです。知っておく必要があるのは、表示リスト IE:stage に追加されたオブジェクトのみがステージ経由でオブジェクトにアクセスできるということです。
これには 3 つの方法があります。
最初の方法は、ボタンへの参照をクラスに渡し、それをクラスのプロパティとして保存することです。
2 番目の方法は、クラスをステージに追加し、クラスで addedToStage イベントをリッスンすることです。その時点で、オブジェクトにアクセスできます。

MovieClip(root)["btext"].text


最初の 2 つの方法は、btext がクラスの一部ではなく、一般的な経験則としてクラスをカプセル化するため、適切な方法ではありません。
これを機能させるには、クラスに値をクラスのプロパティに割り当てさせ、イベントを発生させ、このクラスの親にそのイベントをリッスンさせ、値を取得して割り当てるだけです。

ここにいくつかの推奨される読書があります

于 2012-04-06T20:54:41.663 に答える
0

変数 btext はまったく存在しないと思いますか、それとも Movieclip から継承されたものですか?

于 2012-04-06T20:46:52.167 に答える