2017-04-20 56 views
1

下面是整個項目的鏈接,包括所有依賴關係(如果需要)。 https://www.dropbox.com/sh/3d3towtkhb4c38r/AADdxDJq9ix7bK9hTkt_VTSAa?dl=0在AS3中無法獲取動態文本更改

基本上試圖清理一些腳本我留下來處理,並一直在我的頭靠牆撞到至於爲什麼這是行不通的。我沒有得到任何調試錯誤,一切似乎都鏈接到需要鏈接的地方。我的字體似乎是嵌入式的,我所有的實例名稱似乎都是正確的...我唯一能想到的是我在代碼中丟失了一些愚蠢的東西。任何幫助將非常感激!沒有任何事情像被弄得一團糟,不得不修復它。

基本上文本框應該有一個倒計時計時器,它基於接近什麼樣的種族(例如Race X在xxx分鐘內),如果沒有接近的比賽,它應該顯示一些默認文本。目前,它似乎並不想改變動態文本!

編輯:我還會提到RaceRibbon Movieclip中包含的文本也導出爲as3到com.RaceRibbon類。

package { 

    import flash.display.MovieClip; 
    import flash.events.TimerEvent; 
    import flash.ui.Mouse; 
    import flash.utils.Timer; 
    import com.boo.CustomDate; 
    import com.boo.ScreensaverSimple; 
    import com.RaceRibbon; 

     // This sections is for the image slides and Hour Of Power setting. 
    public class Generic extends MovieClip { 

     // This is where you can set the Hour of Power time start and end time (in 24 hour format e.g. 1330 for 1:30pm) 
     // If there is no hour of power, simply set both numbers to 0 
     private var HourOfPowerStartTime:Number = 0; 
     private var HourOfPowerEndTime:Number = 0; 
     private var HourOfPower1StartTime:Number = 0; 
     private var HourOfPower1EndTime:Number = 0; 


     public var race_ribbon:RaceRibbon;  
     private var ss:ScreensaverSimple; 
     public var time_check_timer:Timer; 
     public var is_race_time:Boolean; 
     public var current_state:String; 
     public var next_race:Date; 
     public var race_time_arr:Array; 
     public var race_num:int; 
     private var ss_time_arr:Array;  
     private var delay_add_timer:Timer; 

     //Set default text 
     private var default_ribbon_text:String = "THERACES.COM.AU"; 

     // Set Race Times 
     private var r1:Date = new Date(2017,5,5,12,15); 
     private var r2:Date = new Date(2017,5,5,12,50); 
     private var r3:Date = new Date(2017,5,5,13,25); 
     private var r4:Date = new Date(2017,5,5,14,00); 
     private var r5:Date = new Date(2017,5,5,14,35); 
     private var r6:Date = new Date(2017,5,5,15,15); 
     private var r7:Date = new Date(2017,5,5,15,55); 
     private var r8:Date = new Date(2017,5,5,16,35); 
     private var r9:Date = new Date(2017,5,5,17,15); 



     // Hide the mouse 
     public function Generic() { 
      Mouse.hide(); 

     // Set Race Ribbon 
      race_ribbon = new RaceRibbon; 
      race_ribbon.x = 1109; 
      race_ribbon.y = 983; 

      race_time_arr = [r1,r2,r3,r4,r5,r6,r7,r8,r9]; 

     // Display Slideshow 
      ss = new ScreensaverSimple; 
      ss.setScreensaver(screens); 

     // Make sure Hour of Power is not visible 
      HOP1.visible = false; 
      HOP2.visible = false; 



      time_check_timer = new Timer(1000); 
      time_check_timer.addEventListener(TimerEvent.TIMER, checkTime); 

      delay_add_timer = new Timer(1,1); 
      delay_add_timer.addEventListener(TimerEvent.TIMER, addAllChildren); 
      delay_add_timer.start();  
     } 


     public function addAllChildren(evt:TimerEvent=null):void { 
      delay_add_timer.removeEventListener(TimerEvent.TIMER, addAllChildren); 
      delay_add_timer.stop(); 
      delay_add_timer = null; 

      addChild(race_ribbon); 

      time_check_timer.start(); 
      checkTime(); 
     } 


     public function checkTime(evt:TimerEvent=null):void { 
      setDatesToCurrent(race_time_arr);// This makes every day race day 
      setDatesToCurrent(ss_time_arr);// This makes all screensaver dates current 

      checkNextRace(); 

      if(next_race != null && is_race_time == false)// If it isn't race time 
      { 
       setCountdown(); 
      } 
      if(next_race == null && is_race_time == true)// If it's race time 
      { 
       setDefaultText(); 
      } 

      checkHOP1(); 
      checkHOP2(); 
     } 

     //Call to make Hour Of Power 1 visible/invisible based on set times 
     private function checkHOP1():void { 
      HOP1.visible = (HourOfPowerStartTime || HourOfPowerEndTime); 
      if (!HOP1.visible) return; 
      var CurrentTime:Number = CustomDate.return24HourNumber(); 
      HOP1.visible = (CurrentTime >= HourOfPowerStartTime && CurrentTime <= HourOfPowerEndTime); 
     } 

     //Call to make Hour Of Power 2 visible/invisible based on set times 
       private function checkHOP2():void { 
      HOP2.visible = (HourOfPower1StartTime || HourOfPower1EndTime); 
      if (!HOP2.visible) return; 
      var CurrentTime:Number = CustomDate.return24HourNumber(); 
      HOP2.visible = (CurrentTime >= HourOfPower1StartTime && CurrentTime <= HourOfPower1EndTime); 
     } 

     public function setDatesToCurrent(arr:Array):void {// This makes every day race day 
      var cd:Date = new Date();// Current Date 

      for(var i:int=0;i<arr.length;i++){ 
       arr[i].fullYear = cd.fullYear; 
       arr[i].month = cd.month; 
       arr[i].date = cd.date; 
      } 
     }  

     public function checkNextRace():void { 
      var ct:Date = new Date();// Current Time as a Date 
      next_race = null; 
      is_race_time = false; 

      // FOR LOOP THIS... one day 
      if(ct < r1) { 
       next_race = r1; 
      } else if(raceTimeSpan(r1) == true) { 
       is_race_time = true; 
       race_num = 1; 
      } else if(ct > raceTimeSpan(r1) && ct < r2) { 
       next_race = r2; 
      } else if(raceTimeSpan(r2) == true) { 
       is_race_time = true; 
       race_num = 2; 
      } else if(ct > raceTimeSpan(r2) && ct < r3) { 
       next_race = r3; 
      } else if(raceTimeSpan(r3) == true) { 
       is_race_time = true; 
       race_num = 3; 
      } else if(ct > raceTimeSpan(r3) && ct < r4) { 
       next_race = r4; 
      } else if(raceTimeSpan(r4) == true) { 
       is_race_time = true; 
       race_num = 4; 
      } else if(ct > raceTimeSpan(r4) && ct < r5) { 
       next_race = r5; 
      } else if(raceTimeSpan(r5) == true) { 
       is_race_time = true; 
       race_num = 5; 
      } else if(ct > raceTimeSpan(r5) && ct < r6) { 
       next_race = r6; 
      } else if(raceTimeSpan(r6) == true) { 
       is_race_time = true; 
       race_num = 6; 
      } else if(ct > raceTimeSpan(r6) && ct < r7) { 
       next_race = r7; 
      } else if(raceTimeSpan(r7) == true) { 
       is_race_time = true; 
       race_num = 7; 
      } else if(ct > raceTimeSpan(r7) && ct < r8) { 
       next_race = r8; 
      } else if(raceTimeSpan(r8) == true) { 
       is_race_time = true; 
       race_num = 8; 
      } else if(ct > raceTimeSpan(r8) && ct < r9) { 
       next_race = r9; 
      } else if(raceTimeSpan(r9) == true) { 
       is_race_time = true; 
       race_num = 9; 
      } else if(ct > raceTimeSpan(r9)) {// If all races are finished 
       setDefaultText(); 
      } 
     } 

     public function raceTimeSpan(d:Date):Boolean { 
      var race_mins:int = 2; 
      var race_on:Boolean = false; 
      var ct:Date = new Date(); 
      if(ct.hours == d.hours) { 
       var max_mins:int = d.minutes + race_mins; 
       if(ct.minutes >= d.minutes && ct.minutes < max_mins) { 
        race_on = true; 
       } 
      } 
      return race_on; 
     } 

     public function setCountdown():void { 
      var hours_left:int = int(String(CustomDate.countdownTime(next_race)).split(":")[0]); 
      var mins_left:int = int(String(CustomDate.countdownTime(next_race)).split(":")[1]); 
      mins_left = (60*hours_left)+mins_left; 
      is_race_time = false; 
      if(mins_left > 2) { 
       race_ribbon.setText("NEXT RACE IN <font color='#000000' letterspacing='-1'>"+(mins_left+1)+" MINUTES</font>"); 
       race_ribbon.setBG(0); 
      } else if(mins_left < 3) { 
       if((mins_left+1) <= 1) { 
        race_ribbon.setText("NEXT RACE IN <font color='#fdb913' letterspacing='-1'>"+(mins_left+1)+" MINUTE</font>"); 
       } else { 
        race_ribbon.setText("NEXT RACE IN <font color='#fdb913' letterspacing='-1'>"+(mins_left+1)+" MINUTES</font>"); 
       } 
       race_ribbon.setBG(1); 
      } 
     } 

     public function setDefaultText():void { 
      race_ribbon.setText("<font color='#fdb913' letterspacing='-1'>"+default_ribbon_text+"</font>"); 
      race_ribbon.setBG(1); 
     }  

    } 

} 

以防萬一你不想去通過文件單獨的com.RaceRibbon代碼

package com { 

    import flash.display.MovieClip; 
    import fl.motion.Color; 
    import flash.display.Sprite; 
    import flash.text.*; 

    public class RaceRibbon extends MovieClip { 

     private var c1:Color; 
     private var c2:Color; 

     public function RaceRibbon() { 
      c1 = new Color(); 
      c1.setTint(0xfdb913,1); 

      c2 = new Color(); 
      c2.setTint(0x000000,1); 
     } 



     public function setText(str:String=""):void { 
      str = str.toUpperCase(); 
      this.tb.htmlText = str; 
     } 

     public function setBG(p:int=0):void { 
      switch(p){ 
       case 0: 
        bg.transform.colorTransform = c1; 
       break; 
       case 1: 
        bg.transform.colorTransform = c2; 
       break; 
      } 
     } 

    } 

} 
+0

只是胡亂猜測,帶狀的(X,Y)的〜(1100,980),這是屏幕外(除非它是一個沒有大規模全屏)。 – Organis

+0

該文件是1920x1080,所以除非我錯了(我很高興誤會,如果我沒有弄錯,應該是右下角的底部? 功能區本身正在顯示(文本是動畫片段這個文本只是沒有被修改 – LeighPierce90

+0

好吧,我沒有看到** tb **聲明或創建,所以有很多可能性,現在我建議** trace(describeType(this )); **在RaceRibbon **構造函數中,以及跟蹤所有具有其**名稱**屬性和** getQualifiedClassName(...)**的孩子的列表,以瞭解它們所屬的確切類別。 – Organis

回答

1

我已經沒有機會來測試你的項目文件,但只是一個關於消除建議:

無論是手動觸發setDefaultText();或者直接針對RaceRibbon的文本框(所以只是發表評論//出來你是不是從這些顯示3行代碼測試其他兩個) 。

如果下面工作的任何Update test正確更新文本,然後你真正的問題在於,無論是:

  • IF的function setCountdown():if(mins_left > 2)什麼呢trace ("minutes left: " + mins_left);說的數額它看起來像它之前能成長聲明? > 2< 3+1 <= 1?如果沒有,那麼你的文字也不會更新。)
  • function checkNextRace()(特別是如果你設置next_race = null;那麼可以肯定以下,與next_race = r1;應該給一個調試錯誤,如「無法將值設置爲NULL(不存在)的變量」但你說你沒有錯誤,所以我很困惑,爲什麼我這麼做。
    (使用ctrl+shift_+enter來調試不是Test Movie選項)。

不管怎麼說代碼...

public function Generic() { 
    Mouse.hide(); 

    // Set Race Ribbon 
    race_ribbon = new RaceRibbon; 
    race_ribbon.x = 1109; race_ribbon.y = 983; 

    // Update test #1 
    setDefaultText(); //did via Function work? 

    // Update test #2 
    race_ribbon.tb.htmlText = "testing123"; //did via Direct Targeting work? 
    race_ribbon.tb.htmlText = "<font color='#fdb913' letterspacing='-1'>" + "testing123" + "</font>"; //maybe works with HTML? 

    // Temp disable other code for above elimination tests  
    /* 
    race_time_arr = [r1,r2,r3,r4,r5,r6,r7,r8,r9]; 

    // Display Slideshow 
    ss = new ScreensaverSimple; ss.setScreensaver(screens); 

    // Make sure Hour of Power is not visible 
    HOP1.visible = false; HOP2.visible = false; 

    time_check_timer = new Timer(1000); 
    time_check_timer.addEventListener(TimerEvent.TIMER, checkTime); 

    delay_add_timer = new Timer(1,1); 
    delay_add_timer.addEventListener(TimerEvent.TIMER, addAllChildren); 
    delay_add_timer.start(); 
    */ 
} 
+1

好吧...所以調試控制檯讓我看到一行代碼,我沒有想到它會做任何事情(除了破壞每一個後續代碼!!!) 我嘗試了其他代碼,它實際上使絲帶消失! 當我刪除線條,一切都回來了,並開始工作。 我覺得真的很愚蠢,因爲我應該先做到這一點,我想我以爲我做了,從此再也沒有檢查過,但是你讓我回到了正軌,並讓我擺脫了很多麻煩!再次感謝你! – LeighPierce90