Pablo Caviglia
09/04/2020, 2:05 PMclass TaskProgress(private val scene: GenericScene) : Container() {
var timeMsParent = 0L
var currentTime = 0L
fun startProgress(size: Double, timeMs: Long, callback: ((taskProgress: TaskProgress) -> Unit)? = null) {
timeMsParent = timeMs
graphics {
val paint = ColorPaint(Colors["#00D532"])
val strokeInfo = Context2d.StrokeInfo(thickness = 4.0, pixelHinting = true)
scene.launchImmediately {
val drawArc = {
val angleDegrees = currentTime * (360.0 / timeMsParent) * PI / 180
stroke(paint, strokeInfo) {
arc(Screen.HALF_WIDTH, Screen.HALF_HEIGHT, size * 0.53, 0, angleDegrees)
}
}
while (currentTime < timeMsParent) {
drawArc()
// sleep
val sleepTime = 30L
delay(sleepTime)
currentTime += sleepTime
println("---> $currentTime")
clear()
}
currentTime = timeMsParent
drawArc()
callback?.invoke(this@TaskProgress)
}
}
}
fun stop() {
timeMsParent = 0
currentTime = 0
}
}
Deactivated User
09/04/2020, 2:38 PMPablo Caviglia
09/04/2020, 2:43 PMaddFixedUpdater(timesPerSecondsUpdate) {
currentTime += timesPerSecondsUpdate.timeSpan.milliseconds.toLong()
}
Deactivated User
09/04/2020, 2:47 PMPablo Caviglia
09/04/2020, 2:48 PMCoroutineScope(Dispatchers.Unconfined).launch {
Deactivated User
09/04/2020, 3:08 PM