我的代码将分数(最终分数)写入旧分数(不删除分数)所以当它再次计数时,我们实际上可以看到背面写的旧分数(玩家所拥有的最后一分)的柜台。 (当它显示新的高分时,我们也可以在后面看到旧的高分)
local physics = require "physics"
physics.start()
--physics.setContinuous( false )
local storyboard = require "storyboard"
local scene = storyboard.newScene()
display.setDefault( "anchorX", 0 )
display.setDefault( "anchorY", 0 )
--local mydata = require( "mydata" )
--mydata.score = 0
score = 0
function scene:createScene(event)
local screenGroup = self.view
sky = display.newImage("bg.jpg")
sky.x = 820; sky.y = 0. sky.rotation = 90
screenGroup:insert(sky)
mountain1 = display.newImage("montagne2.png")
mountain1.x = -200; mountain1.y = 600
mountain1.speed = 0.5
screenGroup:insert(mountain1)
end
local scoreNumber = display.newText(score, 400, 0, nil, 50)
scoreNumber.xScale = 1.2
scoreNumber.yScale = 1.2
if scoreNumber then
scoreNumber:removeSelf()
end
local function updateScore()
score = score + 1
scoreNumber.text = score
--mydata.score = mydata.score + 1
end
scoreTimer = timer.performWithDelay(100, updateScore, -1)
local scoreText = display.newText("score:", 0, 0, nil, 50)
scoreText.xScale = 1.2
scoreText.yScale = 1.2
screenGroup:insert( scoreNumber)
end
function scene:exitScene(event)
Runtime:removeEventListener("touch", touchScreen)
Runtime:removeEventListener("enterFrame", mountain1)
Runtime:removeEventListener("enterFrame", mountain2)
Runtime:removeEventListener("enterFrame", mountain3)
Runtime:removeEventListener("enterFrame", mountain4)
Runtime:removeEventListener("enterFrame", missile1)
Runtime:removeEventListener("enterFrame", obst1)
Runtime:removeEventListener("enterFrame", obst2)
Runtime:removeEventListener("enterFrame", obst3)
Runtime:removeEventListener("enterFrame", obst4)
Runtime:removeEventListener("enterFrame", obst5)
Runtime:removeEventListener("enterFrame", obst6)
Runtime:removeEventListener("collision", onCollision)
timer.cancel(scoreTimer)
timer.cancel(memTimer)
end
function scene:destroyScene(event)
end
scene:addEventListener("createScene", scene)
scene:addEventListener("enterScene", scene)
scene:addEventListener("exitScene", scene)
scene:addEventListener("destroyScene", scene)
return scene
答案 0 :(得分:0)
我不是100%确定我们看到了足够的代码或者更重要的是正确的代码,但还有很多事情要发生。
local scoreNumber = display.newText(score, 400, 0, nil, 50)
scoreNumber.xScale = 1.2
scoreNumber.yScale = 1.2
if scoreNumber then
scoreNumber:removeSelf()
end
在此代码块中,您创建scoreNumber并立即将其删除。您也永远不会将其添加到场景的视图组:screenGroup:insert(scoreNumber)
local function updateScore()
score = score + 1
scoreNumber.text = score
--mydata.score = mydata.score + 1
end
scoreTimer = timer.performWithDelay(100, updateScore, -1)
这可能会导致您的应用崩溃,因为您每隔100毫秒(1/10秒)调用updateScore,它会尝试引用您在其上方删除的scoreNumber。
local scoreText = display.newText("score:", 0, 0, nil, 50)
scoreText.xScale = 1.2
scoreText.yScale = 1.2
现在你已经创建了scoreText,但是我从未看到你将它插入到screenGroup中,也没有看到你更新它的值。
你还有很多其他事情要做。我没有看到你在哪里设置默认锚点(如果你是的话),如果不是,显示对象的中心是X和Y值。所以scoreNumber,它绘制的短暂时间将从左侧居中400px,从顶部居中0px。这至少使文本的上半部分脱离屏幕。然后你出于某种原因扩大规模。为什么不使用更大的字体? 50 * 1.2 = 60.然后scoreText被绘制为0,0这不仅将上半部分放在屏幕上,而且将左半部分放在屏幕上。
请记住,如果您希望Storyboard管理您的显示对象,则必须将它们插入到screenGroup中,您不必自行删除它们。