0

私のアプリには、サーバーにある XML ファイルをロードするボタンがあります。XML ファイルには 31 個の情報が含まれており、日付番号に基づいて毎日 1 つずつ配信されます。ユーザーはボタンをタップして情報をリロードするため、日々変化します。

ここに私が立ち往生しているものがあります。アプリがバックグラウンドから再開し、ボタンに触れると、新しい日の情報が取得されません。昨日の情報が引き続き表示されます。アプリを(電話で)強制的に終了してから再度起動すると、新しい日の情報が正しく読み込まれます。

私の質問 - ボタンを押すたびに強制的にリロードするにはどうすればよいですか?

ご協力ありがとうございます。これが私の ActionScript 3 コードです。

2012 年 10 月 12 日更新: これを 24 時間にわたってテストしたところ、Flash 5.5 シミュレーターで毎日正しく更新されないことがわかりました。したがって、問題はおそらく電話ではありません。私はコードでさらに多くの作業を行い、うまくいけばいくつかの改善を報告します.

// Main 'Today!' button function
var myDateDay:Date = new Date();
var dayNumber:int = myDateDay.day;  

myButton.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void {

// Opens previously saved text file to read XML URL
var file:File = File.applicationStorageDirectory;
file = file.resolvePath("qstURL.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var QSTURL:String = fileStream.readUTFBytes(fileStream.bytesAvailable);
trace("QST URL:" + " " + QSTURL);
fileStream.close();

// Load, process main XML file
var qst:XML;
var qstLoader:URLLoader = new URLLoader();
qstLoader.load(new URLRequest(QSTURL));
qstLoader.addEventListener(Event.COMPLETE, processQST);

function processQST(e:Event):void {
    qst = new XML(e.target.data);
    isProcessed();
}

//Wait until the XML is finished being processed
function isProcessed():void{
    trace("QST is processed and ready for use");

    //Clear welcome message before adding new content
    if(contains(textWelcomeMessage)){
        removeChild(textWelcomeMessage);
        removeChild(imageNoAudio);
        removeChild(textProductKeyMessage);
        trace("Welcome items removed");
    }
    else{
        trace("textWelcomeMessage not onStage");
    }

//Text Section
    // Text field formating 
    var myTextFormat1:TextFormat = new TextFormat();
    myTextFormat1.align = TextFormatAlign.LEFT; 
    myTextFormat1.size = 20; 
    myTextFormat1.font = "Verdana"; 
    myTextFormat1.color = "0x333333";
    myTextFormat1.bold = true;

    var myTextFormat2:TextFormat = new TextFormat();
    myTextFormat2.align = TextFormatAlign.LEFT; 
    myTextFormat2.size = 30; 
    myTextFormat2.font = "Verdana"; 
    myTextFormat2.color = "0x333333";

    // Text field to display title
    var title:XMLList = qst.title;
    var myText1:TextField = new TextField();
    myText1.text = title;
    myText1.autoSize = TextFieldAutoSize.NONE;
    myText1.border = false;
    myText1.width = 315;
    myText1.multiline = false;
    myText1.wordWrap = false;
    myText1.y = 125;
    myText1.x = 5; 
    myText1.setTextFormat(myTextFormat1); 

    // Text field to display question of the day
    var question:XMLList = qst.question.(@day == dayNumber).text;
    var myText2:TextField = new TextField();
    myText2.text = question;
    myText2.autoSize = TextFieldAutoSize.CENTER;
    myText2.border = false;
    myText2.width = stage.stageWidth - 60;
    myText2.multiline = true;
    myText2.wordWrap = true;
    myText2.y = 180;
    myText2.x = 30; 
    myText2.setTextFormat(myTextFormat2); 

    // Text field to display clearing statement
    var cs:XMLList = qst.clearingStatement;
    var myText3:TextField = new TextField();
    myText3.text = cs;
    myText3.autoSize = TextFieldAutoSize.CENTER;
    myText3.border = false;
    myText3.width = stage.stageWidth - 60;
    myText3.multiline = true;
    myText3.wordWrap = true;
    myText3.y = myText2.y + myText2.height + 10;
    myText3.x = 30; 
    myText3.setTextFormat(myTextFormat2); 

    //Remove existing text field to stop overlaying when button touched repeatdly
    while (numChildren > 3) removeChildAt(3);
    /Add text to stage
    addChild(myText1);
    addChild(myText2);
    addChild(myText3);

other code ....

    }//Close function "isProcessed" - load & process main XML file
} //Close function fl_MouseClickHandler - 'Today!' button
4

2 に答える 2

0

私はついにこれを検出し、日付を保持する変数がメインボタンの範囲外にあることを発見しました。そのため、ボタンをクリックしてすべてをリロードすると、日付がリロードされず、この変数が更新されませんでした。その結果、日番号は更新されませんでした。これは、各日の情報を取得するために使用されるものです。

どうすればこれよりも良くなりますか?

于 2012-10-18T02:29:54.087 に答える
0

あなたのxmlファイルはOSによってキャッシュされていると思います。

その場合は、URL の末尾にランダムな文字列を追加してみてください。何かのようなもの :

url + "?v=" + Math.ceil(Math.random()*10000)
于 2012-10-05T04:49:35.983 に答える