2013-01-16 151 views
0

我新的動作和閃光燈,但我設法讓代碼從php文件中獲取數據,並刷新導致每30秒:刷新每XX秒

var timerRefreshRate:Number = 30000; 
var fatherTime:Timer = new Timer(timerRefreshRate, 0); 
fatherTime.addEventListener(TimerEvent.TIMER, testaa); 
fatherTime.start(); 

function testaa(event:Event):void{ 

    var loader:URLLoader = new URLLoader(); 
    loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
    loader.addEventListener(Event.COMPLETE,varsLoaded); 
    loader.load(new URLRequest("data.php")); 

    function varsLoaded (event:Event):void { 
     this.opaqueBackground = loader.data.color; 
     title.text=loader.data.title; 
     banner_text.text=loader.data.text; 

    } 
} 

但現在我面臨兩個問題:

1.)用戶必須等待30秒才能第一次加載電影

2.)設置背景色不再起作用。

我在做什麼錯了?

+1

你可以把在一旦加載它的第一次加載,然後如果這是真的然後將刷新率設置爲true一個布爾值。這將解決一個問題! –

回答

4

你可以調用你的函數來立即加載而不用等待30秒。只要改變函數的參數默認爲空事件:

function testaa(event:Event = null):void{  
    //...  
} 

現在你可以調用該函數像這樣:

//... 
fatherTime.start(); 
testaa(); 

所以,你開始計時,而是立即運行一次的功能。

對於第二個問題,問題很可能是您正在使用嵌套函數,因此this不引用您的類,而是引用testaa函數。嵌套函數通常是不好的練習,如果可能的話,你應該避免它們。外部移動函數和加載器引用,它應該工作。最終的結果應該是這樣的:

var loader:URLLoader; 
var timerRefreshRate:Number = 30000; 
var fatherTime:Timer = new Timer(timerRefreshRate, 0); 
fatherTime.addEventListener(TimerEvent.TIMER, testaa); 
fatherTime.start(); 
testaa(); 

function testaa(event:Event = null):void{ 

    loader = new URLLoader(); 
    loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
    loader.addEventListener(Event.COMPLETE,varsLoaded); 
    loader.load(new URLRequest("data.php")); 
} 

function varsLoaded (event:Event):void { 
    this.opaqueBackground = loader.data.color; 
    title.text=loader.data.title; 
    banner_text.text=loader.data.text;  
} 
+0

Tnx快速回答,第一個問題很好的解決方案,但對於第二個問題:當我「分開」這些功能,我得到這個錯誤:「1120:未定義的屬性加載器的訪問」。我認爲這兩個功能需要以某種方式連接... – SomeoneS

+0

@SomeoneS對不起,你是對的。我已經編輯了將函數外部的URLLoader引用移回的答案。 –

+0

Tnx男人,它現在很好:) – SomeoneS