2014-11-03 2 views
0

Hallo Я новичок, У меня есть мой код AS3.Action Script ScoreBoard

package 
{ 
    import flash.text.TextField; 
    import flash.text.TextFormat; 
    import flash.media.Sound; 
    import flash.net.URLRequest; 
    /** 
    * ... 
    * @author Artur 
    */ 
    public class Scoreboard extends TextField 
    { 
     public var score:int; 
     public function Scoreboard() 
     { 
      score = 0; 
      var txtf:TextFormat = new TextFormat; 
      txtf.color = 0xFFCC33; 
      txtf.size = 25; 
      txtf.font = "verdana"; 
      txtf.bold = true; 
      this.defaultTextFormat = txtf; 
      this.text = "Score : 0" 
      this.width = 300; 
      this.x = 530; 
     } 
     public function updateScore(_score:int):void 
     { 
      score += _score; 
      this.text = "Score: " + score; 
     } 

    } 

} 

Я хотел бы изменить цвет TextFormat, если счет больше чем 100 он изменит цвет на зеленый и если это ниже, чем 0 до красного.

У меня этот код.

if (score>100){ 
     txtf.color = 0xFFCC33; 

} else if (score>50){ 
     txtf.color = 0xFFCC33; 


} 

Я не знаю, как реализовать его в первом коде. Может кто-нибудь мне помочь?

спасибо.

+0

хорошо, думать об этом. _when_ вы проверили бы текущий счет, чтобы увидеть, насколько он высок? – DodgerThud

+0

Я не уверен, я думаю, мне нужно использовать addEventListener, чтобы проверить его. Я программирую в AC3 в школе 2 недели, сейчас, в свободное время, хорошо, но я мало что знаю об этом. –

+0

На самом деле, решение намного проще. Вы должны проверить счет, когда вы измените счет. И единственная часть вашего кода, в которой вы меняете оценку, находится в функции 'updateScore (int)'. Как указал Акмозо в своем ответе – DodgerThud

ответ

0

Попробуйте это:

... 

public function updateScore(_score:int):void { 

    score += _score 

    if (score > 100){ 

     txtf.color = 0x00FF00 // green 

    } else if (score < 0){ 

     txtf.color = 0xFF0000 // red 

    } 
    this.setTextFormat(txtf) 
    this.text = "Score: " + score 

} 

... 

Обратите внимание, что это просто улучшить свой код, я не знаю, где и когда вы звоните updateScore.

EDIT

Декларирование txtf

... 

private var txtf:TextFormat 

public function Scoreboard() { 

    ...   

    txtf = new TextFormat() 

    .... 

} 

... 
+0

, вы должны объявить 'txtf' вне конструктора вашего класса. – akmozo

+0

Спасибо, Im get error: C (33): col: 9 Ошибка: доступ к неопределенному свойству txtf. txtf.color = 0x00FF00 // зеленый ^ C: \): col: 9 Ошибка: доступ к неопределенному свойству txtf. txtf.color = 0xFF0000 // red ^ (40): col: 24 Ошибка: доступ к неопределенному свойству txtf. this.setTextFormat (txtf) ^ Сборка с ошибками (fcsh). –

+0

Я отредактировал свой ответ. – akmozo