0

在我使用 Corona SDK 创建的这个应用程序中,当您获胜时,文本“You win”会出现,但不会出现。我可以发布所有代码,但我不认为其余的会很麻烦,所以这里只是精华:

_H = display.contentHeight;
_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("You Lose!", _W/2, _H/2, nil, 50)
loseMSG.isVisible = false

winMSG = display.newText("You Win!", _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 -- Here the win text should become visible, but doesn't
elseif (condition == "Fail") then
    bgAlpha = display.newImage("media/bgAlpha.png");
    bgAlpha.xScale = 2;
    bgAlpha.yScale = 2; 
    loseMSG.isVisible = true        
end

结尾

任何想法为什么?

4

2 回答 2

1

您需要采取分而治之的方法。

这行得通吗?

winMSG = display.newText("You Win!", _W/2, _H/2, nil, 50)
winMSG.isVisible = true <-- note this is set to true

有吗?

winLose每个都被调用吗?将打印语句或断点或您在平台上用于调试的任何内容放入其中。

有吗?

变量condition包含什么?检查/打印它并验证它确实是“Win”、相同的大小写、没有空格等,或者您可以在该函数的适当分支中放置一个打印语句以确保它被命中。

那样可以么?

bgAlpha如果您删除代码,它会显示吗?

等等等等。


我不知道 Corona,但谷歌搜索文档newText可能是你的参数错误(你没有传递字体)。

我可以发布所有代码

您发布的越少越好,因为这意味着您已经完成了上面显示的步骤以尝试隔离问题。十分之九,这样做会自行揭示问题。

于 2012-06-06T21:42:11.743 回答
0

为什么你给 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-06T21:37:04.427 回答