※ ChatGPTを利用し、要約された質問です(原文:AS3 Flash 変数の扱い方について)
AS3 Flash 外部テキストのロードと変数の扱い方
このQ&Aのポイント
AS3 Flashで外部テキストをロードして変数に代入する方法について教えてください。
イベントハンドラで数値を取得し、別の変数に代入して保持させたいのですがうまく行きません。
外部ASファイルのカスタムクラスのプロパティに代入しても値が保持されません。解決方法を教えてください。
質問なんですが、外部テキストをロードして完了したら
イベントハンドラで数値の5を取得し、
それを別の変数に代入して保持させようと思い、
外部ASファイルのカスタムクラスのプロパティに代入したんですが上手く行きませんでした。
なのでどのようにしたら良いのか教えて頂けませんか?
プログラムは以下になります。ではよろしくお願いします。
***ASファイル***
package{
public class ImageRoadClass{
public static var number:int; // 返り値保持
private var number2:int; // 返り値保持
function ImageRoadClass(){
}
public function setNumber(number:int):void{
this.number2 = number;
}
public function getNumber():int{
return this.number2;
}
}
}
***flaファイル***
// インスタンス生成
var imageRoad:ImageRoadClass = new ImageRoadClass();
・
(割愛) ・
・
// ロード完了後のイベントハンドラ
function jsonReadHandler(e:Event):void{
var json_data:String = URLLoader(e.currentTarget).data;
// 読み込んだテキストをjsonオブジェクトにデコード
var json_decode_data:Object = JSON.parse(json_data);
// ***ここで値を外部クラスのプロパティに代入***
ImageRoadClass.number = json_decode_data[0].number;
imageRoad.setNumber(json_decode_data[0].number);
trace(ImageRoadClass.number); // 出力結果:5
trace(imageRoad.getNumber()); // 出力結果:5
}
trace(ImageRoadClass.number); // 出力結果:0 保持できてない
trace(imageRoad.getNumber()); // 出力結果:0 保持できてない
お礼
回答ありがとうございます。 確かにtestFuncで試してみると値が保存されていました! おっしゃる通り、asファイルのプロパティに値が保存される前に出力してたってことだったんですね。何か大きな勘違いをしていたみたいです。 ただなんで最後に書いた出力文が最初に実行されているのかが良くわかりませんが、これはまた違う内容の質問になってしまうので、また改めて質問したいと思います!もし都合があえばこの疑問にも答えてくれると助かります! ではありがとうございました。