お世話になっております。
題記の件で、質問させてください。
Load系のコマンドで読み込んだデータを受け取るには、this.latestDataを利用した以下のような手順が定石かと思っています。
new LoadSound(new URLRequest("./sound.mp3"))
,function(){
trace(this.latestData);//出力:[object Sound]
}
ここで読み込んだsoundオブジェクトをクラスのインスタンス変数に参照させたく以下のようなコードを書きました。
package {
import flash.display.Sprite;
import flash.media.Sound;
import flash.net.URLRequest;
import jp.progression.commands.media.DoSound;
import jp.progression.commands.display.*;
import jp.progression.commands.lists.*;
import jp.progression.commands.net.*;
import jp.progression.commands.tweens.*;
import jp.progression.commands.*;
/**
* @author 393
*/
public class Test extends Sprite{
private var _sound:Sound;
static private var s:Sound;
private var number:int = 0;
public function Test() {
var slist:SerialList = new SerialList();
slist.addCommand(
new LoadSound(new URLRequest("./sound.mp3"))
,function(){
trace(this.latestData);
_sound = Sound(this.latestData);
trace("_sound : " + _sound);
Test.s = this.latestData;
new DoSound(_sound).execute();
number = 100;
}
,new SerialList(null
,new Trace("sound : " +_sound)//出力:null(latestDataの中身が入っていてほしい)
,new Trace("s : " +Test.s)//出力:null(latestDataの中身が入っていてほしい)
,new Trace("number : " +number)//出力:0(100となってほしい)
)
);
slist.execute();
}
}
}
読み込んだLoadSoundで読み込んだデータを、インスタンス変数_soundで保持したいのですが、上手くいきませんでした。
クラス変数ならばと、Test.sでの保持も試みましたが、こちらも上手くいきませんでした。
function(){}内でthisのスコープが変わってるせいだと思うのですが、こういった場合はどのようにして参照させたらよろしいでしょうか?
ご助言、よろしくお願い致します。