2010-03-11 104 views
0

我有一堆as3游戏。 在我的游戏中,当newCrag点击egg_mc时,分数被添加。as3跟踪变量数值

// Add the score 
var newScore:score_mc; 
newScore = new score_mc(); 
addChild(newScore); 
newScore.x = 20; 
newScore.y = 20; 
newScore.score_txt.text='0/15'; 
var score:Number=0; 

function getEggs(event:Event):void { 

    if(event.target.hitTestObject(MovieClip(root).newCrag) && event.target is egg_mc) { 

     sndEgg.play(); 

     if(event.target.stage) { 
      event.target.parent.removeChild(event.target); 
     } 

     // Increase score 
     score++; 
     newScore.score_txt.text = "" + score + '/15'; 

    } 

} 

我想用if语句引用分数的数值。我需要根据分数框内的数字来改变速度变量。

var speed:Number 

if(score > 10 || score == 10) { 
    speed=20; 
    trace("speed3"); 
} else if(score > 5 || score == 5 && score < 10) { 
    speed=18; 
    trace("speed2"); 
} else { 
    speed=14; 
    trace("speed1"); 
} 

但是,这部分代码无法正常工作。任何帮助将非常感激。

感谢,

韦德

+0

在同一范围内得分定义作为您发布的第二个代码块?我有一段时间没有与as3一起工作 – Warty 2010-03-11 06:25:00

+0

雅,所有在根时间轴,相同的框架,而不是在一个函数内。 – 2010-03-11 06:32:06

+0

你的分数检查是如何执行的?如果它全部在一个框架上,它将只运行一次(第一次)或者如果它是'输入框架',它将每次迭代将分数重置为0。 – Les 2010-03-11 07:52:17

回答

0

试试这个:

var speed:Number; //you missed a semicolon here 
if (score>=10) { 
    speed=20; 
    trace("speed3"); 
} else if (score>=5) {//no need to test twice for <10 
    speed=18; 
    trace("speed2"); 
} else { 
    speed=14; 
    trace("speed1"); 
} 

或(利息只),全部在一行:

speed = (score>=10)?20:((score>=5)?18:14);// no points for readability!