为什么我的文本在 corona sdk 中没有显示

嗨,我花了两天的时间努力解决这个问题,但是我无法解决,所以来向您寻求帮助。 我的变量 myText 没有显示出来,它应该显示 score。我知道我没有更新 score,但暂时这不重要。 以下是代码:

  display.setStatusBar( display.HiddenStatusBar )
-- 开始物理引擎
local physics = require("physics")
physics.start()
-- 设置变量
_W = display.contentWidth; -- 获取屏幕的宽度
_H = display.contentHeight; -- 获取屏幕的高度
motionx = 0; -- 沿 x 轴移动角色的变量
motiony = 0; -- 沿 y 轴移动角色的变量
speed = 2; -- 设定行走速度
jump = 3;-- 设定跳跃速度
score=0;
local myText = display.newText(score,_W-20,_H-20, native.systemFont, 30 )
-- 将 Sky 添加到背景中
local sky = display.newImage("background_sky.png")
sky.x = _W/2; sky.y = 160;
-- 将 platform1 添加到游戏中
local platform1 = display.newImage( "grass.png")
platform1.width=100;platform1.height=20;platform1.x=150;platform1.y=_H/2;
physics.addBody(platform1,"static",{ friction=0.5, bounce=0.3 })
-- 将 platform2 添加到游戏中
local platform2 = display.newImage( "grass.png")
platform2.width=100;platform2.height=20;platform2.x=350;platform2.y=_H/2-70;
physics.addBody(platform2,"static",{ friction=0.5, bounce=0.3 })

-- 将 Grass Floor 添加到游戏中
local grass_bottom = display.newImage( "grass_bottom.png")
grass_bottom.x = _W/2; grass_bottom.y = _H-35;
--grass_bottom:setReferencePoint(display.BottomLeftReferencePoint)
physics.addBody( grass_bottom, "static", { friction=0.5, bounce=0.3 } )

-- 将 Grass 添加到背景中
local grass_top = display.newImage( "grass_top.png")
grass_top.x = _W/2; grass_top.y = _H-95;

-- 将 Guy 添加到游戏中
local guy = display.newImage( "guy.png" )
physics.addBody( guy, "dynamic", { friction=0.5, bounce=0 } )
guy.x = 2; guy.y = 150;

-- 将左摇杆按钮添加到游戏中
local left = display.newImage ("btn_arrow.png")
left.x = 45; left.y = 280;
left.rotation = 180;

-- 将右摇杆按钮添加到游戏中
local right = display.newImage ("btn_arrow.png")
right.x = 120; right.y = 282;
-- 将向上的摇杆按钮添加到游戏中
local up = display.newImage ("btn_arrow.png")
up.x = 195;up.y=280;
up.rotation=-90;

-- 当不按下箭头时停止角色移动
local function stop (event)
    if event.phase =="ended" then
        motionx = 0;
        motiony = 0;
    end
end
Runtime:addEventListener("touch", stop )

-- 移动角色
local function moveguy (event)
    if guy.x < _W - 2 then
     if guy.x > 2 then
    guy.x = guy.x + motionx;
    guy.y = guy.y - motiony;
    end
         if guy.x == 2 then
    guy.x=3;
    end
if guy.x < 2 then
    guy.x=3;
    end
    if guy.x < _W - 2 then
    guy.x = guy.x + motionx;
    guy.y = guy.y - motiony;
    end
    if guy.x == _W - 2 then
    guy.x=_W-3;
    end
    if guy.x > _W - 2 then
    guy.x=_W-3;
    end

end
    end
Runtime:addEventListener("enterFrame", moveguy)

-- 当按下左箭头时,将角色向左移动
function left:touch()
    motionx = -speed;
end
left:addEventListener("touch",left)

-- 当按下右箭头时,将角色向右移动
function right:touch()
    motionx = speed;
end
right:addEventListener("touch",right)
-- 当按下向上箭头时,将角色向上移动
function up:touch()
    motiony = jump;
end
up:addEventListener("touch",up)

就是这一行:

local myText = display.newText(score,_W-20,_H-20, native.systemFont, 30 )

我试了所有的方法,我需要你的帮助。

点赞
用户2858170
用户2858170

不是冠状病毒专家,但我有很多图形/ GUI编程经验。

对我而言,您先添加文本再添加背景似乎有些奇怪。在迄今为止我使用过的所有框架中,这都会引起问题。

想象一下,您想在道路上涂一辆车。如果您先绘制汽车,那么您会将道路绘制在汽车上方。最终你就得到了一张道路的图片...

这只是一个猜测。也许corona足够聪明,可以自动将文本放入顶层。但我很难相信这一点。

2016-06-06 14:46:44
用户5169300
用户5169300

因为在创建之前,你的文本被显示在背景后面。我建议使用组来创建背景、中间和前景层,然后创建场景的显示对象并将它们添加到你想要的分组中。

2016-06-08 08:48:44