如何更新corona SDK中的值?

时间:2017-06-29 11:33:02

标签: lua corona

检查分数值时,为什么我的代码无效?我一直试图解决这个问题很长一段时间但没有任何作用。为什么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

2 个答案:

答案 0 :(得分:2)

首先,没有" if function"。

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

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

然后你评估if语句。

您应该将ball.x赋值移动到myTouchListener,以便在每次分数更改时对其进行评估。

想一想。为什么要再次评估if语句?谁会触发这个以及为什么?

答案 1 :(得分:1)

这应解决问题:

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每次触摸后,不只是首次运行程序时。

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