首先,请查看下面的代码。
local function receiveData( )
l = client:receive()
print(l)
return l
end
local refNum = receiveData()
local function endTurn( )
waitText = display.newText("Opponent Turn",centerX,allY*.1,native.systemFont,30)
local passer = receiveData()
if passer ~= nil then
takeTurn()
end
end
我想要做的是在屏幕上显示waitText,但是我遇到了障碍,因为在passer首先收到数据之前,waitText不会出现。所以,我想知道如何在等待接收数据的同时显示waitText。
我将不胜感激任何建议,谢谢。
答案 0 :(得分:1)
你必须做两件事:
settimeout(seconds)
函数在套接字上设置超时。记录在案here。请注意,在使用receive
时,您必须检查错误代码,因为它可能是timeout
,表示在给定时间内没有任何内容可供读取。 类似的东西:
client:settimeout(0.01) -- 10 ms
local function receiveData( )
l,e = client:receive()
print(l)
return l,e
end
function checkReceive()
local passer, err = receiveData()
if passer ~= nil then
takeTurn()
else
timer.performWithDelay(100, checkReceive) -- repeat the check in 100 ms
end
end
local function endTurn( )
waitText = display.newText("Opponent Turn",centerX,allY*.1,native.systemFont,30)
checkReceive() -- returns in 10ms if nothing available, and will be called
-- automatically every 100ms until something arrives
end
seconds
可以具有毫秒级的精度,但可以遵循的实际精度因系统而异。
答案 1 :(得分:0)
可能是在其他对象下?尝试waitText:toFront()