我从一个带有network.request-function的网站获取一些json的东西(比特币的价值)。但是,我希望每次用户按下更新时,json的东西(比特币的值)都会更新到最新版本。怎么可能?
local json = require("json")
btcPriceText = display.newText("price", 50,100, "Arial", 25)
local function btcValue(event)
btcValue = json.decode(event.response)
dollarbtc= btcValue[1]['rate']
end
local function update()
if(dollarbtc) then
btcPriceText.text = "BTC"..dollarbtc
end
end
network.request( "https://bitpay.com/api/rates", "GET", btcValue )
Runtime:addEventListener( "enterFrame", update )
这是我正在使用的所有代码。
答案 0 :(得分:0)
参考优秀的Corona docs on buttons页面,您可以将network.request
放在该页面上第一个示例的handleButtonEvent
中。这样,每次用户单击按钮时,都会发出新请求。响应一到,就会调用btcValue
函数,从而根据响应内容设置dollarbtc
值。目前,您的update
回调会在每个时间帧检查响应数据是否可用。所以至少,你应该在更新文本小部件后取消设置dollarbtc(将其设置为nil),否则你将在每个时间框架更新小部件!
local function update()
if (dollarbtc) then
btcPriceText.text = "BTC"..dollarbtc
dollarbtc = nil -- do come here again, text field updated!
end
end
但是,您甚至不需要这样做:在处理回复时更新文本字段:
local function btcValue(event)
local btcValue = json.decode(event.response)
local dollarbtc= btcValue[1]['rate']
btcPriceText.text = "BTC"..dollarbtc
end
您可以忘记Runtime:addEventListener( "enterFrame", update )
行,不再需要。
请勿忘记添加display.yourButton:addEventListener( "tap", handleButtonEvent)
按钮responds to clicks。点击事件没有阶段(而触摸事件确实存在)。