0

私はプログラミングが初めてです。Sound オブジェクトに新しいプロパティを追加する必要がありますが、機能しません。これは私がやっていることです:

S31 = new Sound();
S31.load(new URLRequest("mp3/S31.mp3"));
Sound.prototype.correctas = 0;
trace(S31.correctas);

次のエラー メッセージが表示されます。

「1119: 静的タイプの flash.media:Sound を使用した参照を介して、未定義の可能性があるプロパティ correctas へのアクセス」。

どうすればいいのかわからない。

御時間ありがとうございます。

4

1 に答える 1

1

プロトタイプクラスは実際にはas3では使用されていません(ここで間違っている場合は誰かに訂正してください。含まれていることはわかっていますが、なぜ使用するのかよくわかりません)。

実行時にプロパティを追加できる動的クラスを作成できますが、この場合はOOPに固執します。

やりたいことは、Soundを拡張し、含めたい拡張機能を保持するクラスを作成することです。この新しいクラスは、基本のSoundクラスのすべての機能を継承します。

新しいAS3クラスを作成し、Soundを拡張してみてください

package src {
import flash.media.Sound;
import flash.media.SoundLoaderContext;
import flash.net.URLRequest;

    public class MySound extends Sound{

    public var correctas:Number; //assuming you are using a Number here          

    //sound takes two params in its constructor 
    public function MySound(stream:URLRequest=null, context:SoundLoaderContext=null){
    //super passes these params to the super class
        super(stream, context);
     }
}

これを使用するには、Soundの代わりに新しいMySoundオブジェクトを作成します

 var s31:MySound = new MySound();
 s31.load(new URLRequest("mp3/S31.mp3"));
 s31.correctas = 0;
 trace(s31.correctas) //will be 0
于 2012-10-20T01:05:39.577 に答える