Corona:ScoreText正在将新分数写入旧的分数上方。

我的代码会在旧分数(不删除旧分数)上写新分数(最终分数)。所以当它再次计数时,我们实际上可以看到计数器背后写着旧分数(玩家最后一次得分的分数)。当它显示新的最高分时,我们也可以在背后看到旧的最高分。

点赞
用户1870706
用户1870706

我不100%确定我们是否看到了足够的代码或更重要的是正确的代码,但有一些事情正在进行。

local scoreNumber = display.newText(score、4000nil50)
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,而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中,不需要自己删除它们。

2015-06-26 23:27:31