如何更新 corona SDK 中的值?

How to update a value in corona SDK?

为什么我检查分值时我的代码不起作用?很长一段时间以来,我一直在尝试解决这个问题,但没有任何效果。为什么 scoreTxt 更新了,但 if 函数什么都不做?

local function myTouchListener( event )
   if (event.phase == "began") then
      transition.pause()   
      score = score +1
      scoreTxt.text = score   
  end
 end


 local ball = display.newCircle(0,0,40)
       ball:addEventListener("touch",myTouchListener)




 if(score > 2)then
   ball.x = display.contentCenterX
   --NOTHING HAPPENS HERE
 end

首先没有"if function".

假设您提供的代码仅执行一次,您的 if 语句也仅被评估一次。当发生这种情况时,得分很可能不会 > 2,因此根本不会评估 if 语句主体。这就是什么都没有发生的原因。

执行代码时,您定义了一个函数 myTouchListener。然后创建一个圆并添加 myTouchListener 函数作为其事件侦听器。

然后计算 if 语句。

您应该将 ball.x 分配给 myTouchListener,以便在每次分数变化时对其进行评估。

想一想。为什么要再次评估 if 语句?谁会触发它,为什么?

这应该可以解决问题:

local score = 0
local function myTouchListener( event )
if (event.phase == "began") then
    transition.pause()   
    score = score +1
    scoreTxt.text = score   

    if(score > 2)then
        ball.x = display.contentCenterX
    end
end
end
local ball = display.newCircle(0,0,40)
ball:addEventListener("touch",myTouchListener)

您遇到的问题是 if 语句只发生一次并且分数等于 0 或 null。您需要在每次触摸发生后检查分数是否 > 2,而不是在程序第一次出现时检查一次 运行。

你也不能只让 score = score + 1,因为如果你没有初始化它,score 实际上等于 null。所以 null = null + 1 没有任何意义。