2017-04-20 84 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