【发布时间】:2021-11-11 00:41:38
【问题描述】:
请原谅我目前编程的不好方式,我对编程很陌生。
好吧,假设我做了一个简单的 dnd 骰子滚轮(因为我是)。我做到了,所以它会根据他们想要掷出的骰子数量和骰子的类型来掷出一堆随机数。然后它将它发送到一个文本视图,一次相信一个。我想添加一个短暂的延迟,所以我问了stackOverFlow,我相信有一个处理程序可以工作;但是,出于同样的原因,我首先需要延迟。它仅显示显示屏上滚动的最后一个数字,按钮按下之间现在有短暂的延迟。我想向用户显示每个数字一次滚动一个,每个数字之间有很短的延迟。
没有处理程序的代码示例:
else if (numTimesRolled.progress <= 4) {
for (i in 0 until numTimesRolled.progress + 1){
randNum = Random.nextInt(1, diceIsComfirm)
resultsArray[i] = randNum.toString()
randNumDisplay.text = resultsArray[i]
}
randNumResultsDisplay.text = "Rolled ${resultsArray.joinToString(" ")}"
}
输出:最后掷出的数字
我尝试使用处理程序的示例:
else if (numTimesRolled.progress <= 3) {
for (i in 0 until numTimesRolled.progress + 1){
randNum = Random.nextInt(1, diceIsComfirm)
resultsArray[i] = randNum.toString()
var runResults = Runnable {
randNumDisplay.text = resultsArray[i]
}
var delayResults = Handler()
delayResults.postDelayed(runResults, 1000)
}
//for (i in 0 until numTimesRolled.progress + 1){
//}
randNumResultsDisplay.text = "Rolled ${resultsArray.joinToString(" ")}"
}
/////////////////////////////////////// ///////////////////////////////////////// /
else if (numTimesRolled.progress <= 3) {
for (i in 0 until numTimesRolled.progress + 1){
randNum = Random.nextInt(1, diceIsComfirm)
resultsArray[i] = randNum.toString()
}
for (i in 0 until numTimesRolled.progress + 1){
var runResults = Runnable {
randNumDisplay.text = resultsArray[i]
}
var delayResults = Handler()
delayResults.postDelayed(runResults, 1000)
}
randNumResultsDisplay.text = "Rolled ${resultsArray.joinToString(" ")}"
}
输出:两者都正常运行,但每次按下按钮时滚动的最后一个数字都有延迟。
我尝试将整个 for 循环设为“可运行”,但这只是我在寻找解决方案时愚蠢的。
【问题讨论】:
标签: loops android-studio kotlin delay handler