当满足条件时,是否可以关闭检查条件以及如何实施(使用您选择的语言)?
示例:
假设一个if语句在更新函数中运行,我希望当语句在程序的生命周期中运行一次时不调用if语句。我想这可以通过将语句包装在函数变量(javascript)中然后重新分配该变量来实现,如果/当条件为真时返回void。
答案 0 :(得分:0)
好吧,假设你有这个(C ++):
void update() {
// code
if (condition) {
// code
}
// code
}
你能做的是:
void update() {
// code
static bool already_ran = false;
if (!already_ran && condition) {
alreadu_ran = true;
// code
}
// code
}
static
表示变量在函数调用中保留其值,在C / C ++中,逻辑运算符(本例中为&&
)被短路。这意味着除非他们需要,否则他们不会评估第二个操作数。例如,如果!already_ran
为false
,则无论false
如何,整个表达式都为condition
,因此不会评估condition
。
答案 1 :(得分:0)
不是100%确定这比使用简单条件运行increaseValue()函数更有效,但这里是我正在使用的代码,它似乎工作(至少在as3中)。更新被称为每秒约30次。
public function update(){
if(isHit){ //isHit is part of another condition used by collision
increaseValues = function() {
this.height += 1;
this.width += 1;
this.x -= 1;
this.y -= 1;
this.alpha += -0.1;
if (this.alpha == 0){
increaseValues = function(){
return;
}
}
}
}
increaseValues();
}