Lua - 在 Corona SDK 中未显示文本

在我用 Corona SDK 创建的应用中,当你获胜时应该出现文字“你赢了”,但实际上并没有出现。我可以分享所有的代码,但我不认为其余的内容会有帮助,所以这里只有关键的代码。

_W = display.contentWidth;
mRand = math.random;
o = 0;
time_remain = 20;
time_up = false;
total_orbs = 45;
total_secs = 20;
ready = false;

local backGround = display.newImage("media/bg.png");

backGround.xScale = 2;
backGround.yScale = 2;

loseMSG = display.newText("你输了!", _W/2, _H/2, nil, 50)
loseMSG.isVisible = false

winMSG = display.newText("你赢了!", _W/2, _H/2, nil, 50)
winMSG.isVisible = false

local countdowntxt = display.newText(time_remain, 0, 0, native.systemFont, 60);
countdowntxt.xScale = .5; countdowntxt.yScale = .5;
countdowntxt:setReferencePoint(display.BottomRightReferencePoint);
countdowntxt.x = _W-20; display.y = _H-20;
countdowntxt:setTextColor(0, 0, 0)

function winLose(condition)
if (condition == "Win") then
    bgAlpha = display.newImage("media/bgAlpha.png");
    bgAlpha.xScale = 2;
    bgAlpha.yScale = 2;
    winMSG.isVisible = true -- 这里应该出现“你赢了”的文字,但实际上没有
elseif (condition == "Fail") then
    bgAlpha = display.newImage("media/bgAlpha.png");
    bgAlpha.xScale = 2;
    bgAlpha.yScale = 2;
    loseMSG.isVisible = true
end

有什么想法为什么会这样吗?

点赞
用户1137788
用户1137788

为什么你将字体值设为了 nil? 至少传递默认系统字体

loseMSG = display.newText("You Lose!", _W/2, _H/2, native.systemFont, 50)
winMSG = display.newText("You Win!", _W/2, _H/2, native.systemFont, 50)
2012-06-06 21:37:04
用户501459
用户501459

你需要采用分治法的方法。

这行代码是否有效?

winMSG = display.newText("You Win!", _W/2, _H/2, nil, 50)
winMSG.isVisible = true <-- 请注意,这个属性被设置为 true

有效吗?

winLose 函数被调用了吗?在其中插入一条打印语句或者一个断点来调试。

确实被调用了吗?

变量 condition 的内容是什么?检查它 / 将其打印出来并验证它确实是“Win”、大小写正确、没有空格等等。或者,在该函数的适当分支中插入一个打印语句以确保它被调用。

这样可以吗?

如果移除 bgAlpha 代码,它是否显示?

以此类推。


我不了解 Corona,但通过 Google 搜索 newText 的文档,似乎你的参数有误(你没有传递字体)。

我可以发表全部代码

你发表越少,越好,因为这意味着你已经按照上述步骤尝试隔离问题。十有八九,这样做就能发现问题。

2012-06-06 21:42:11