假设我正在创建一个可以编辑角色技能的游戏。
目前,只有“耐力”有价值,即10分。你可以减少它,但我希望它停在5(作为0或负面耐力的英雄将是无意义)。
我有两个问题,但让我们先看一下代码:
//Defaults
var hero_endurance:int = 10;
var string_hero_endurance:String = String(hero_endurance);
box_hero_endurance.text = string_hero_endurance;
//Endurance Controls
function hero_endurance_decrease(MouseEvent):void {
hero_endurance = hero_endurance-1;
var string_hero_endurance:String = String(hero_endurance);
box_hero_endurance.text = string_hero_endurance;
}
if (hero_endurance > 5){
button_hero_endurance_down.addEventListener(MouseEvent.CLICK, hero_endurance_decrease);
}
现在我的第一个问题:
此代码不起作用。有价值的内容会继续下去,就像if语句根本不存在一样。我该如何解决这个问题?
第二个问题:
也许您已经注意到,该功能始终通过以下方式刷新文本框中的重要内容:
var string_hero_endurance:String = String(hero_endurance);
box_hero_endurance.text = string_hero_endurance;
Actionscript 2.0甚至不需要这样的代码,您对有价值的所做的任何更改都会反映在文本框中。 有一种简单的方法可以做到这一点,还是我必须为每种情况使用此代码?
先谢谢!
答案 0 :(得分:0)
回答你的第一个问题:在你的函数中创建一个变量,该变量保存一个整数值,表示你的英雄的耐力可以降到的最低数字,然后你需要检查当前的值,如下所示:
var currentEndurance:int = 10;
var lowestEndurance:int = 5;
if(currentEndurance != lowestEndurance)
{
//update your textbox
}else{
//both vars are equal so don't do anything
}
答案 1 :(得分:0)
它继续下降的原因是因为你的监听器设置不正确。即使在5以下的耐力下降后,您的事件监听器仍会继续触发。此外,您的事件处理函数声明未正确设置。我就是这样做的:
//Defaults
var hero_endurance:int = 10;
var string_hero_endurance:String = String(hero_endurance);
box_hero_endurance.text = string_hero_endurance;
//Endurance Controls
function hero_endurance_decrease(event:MouseEvent):void {
hero_endurance = hero_endurance-1;
var string_hero_endurance:String = String(hero_endurance);
box_hero_endurance.text = string_hero_endurance;
removeEnduranceListener();
}
// removes the endurance listener when needed
function removeEnduranceListener():void {
if (hero_endurance <= 5){
button_hero_endurance_down.removeEventListener(MouseEvent.CLICK, hero_endurance_decrease);
}
}
// adds the endurance listener when needed
function addEnduranceListener():void {
if (hero_endurance > 5){
button_hero_endurance_down.addEventListener(MouseEvent.CLICK, hero_endurance_decrease);
}
}
addEnduranceListener(); // add the endurance listener (function adds if needed)
我上面代码中最重要的一点是,无论你在哪里允许增加耐力,你都需要添加对addEnduranceListener函数的调用,以便再次注册降低其耐力的监听器,并使用我的代码作为一个模板,您可以以类似的方式创建功能,增加耐力,并在耐力达到10时对添加耐力功能进行注销。