我正在尝试创建一个表单来更改动画时长。我已将下拉菜单的点击监听器连接到animTime
,并且已验证动画时长animTime
确实从 3000 变为 300,但实际动画速度仍然保持不变。
你知道我做错了什么吗?我正在使用,org.jetbrains.compose:1.8.0-beta02
如果这很重要的话。
@Composable
fun test() {
var animTime by remember { mutableIntStateOf(3000) }
var easing by remember { mutableStateOf(FastOutSlowInEasing) }
var containerSize by remember { mutableStateOf(IntSize.Zero) }
val boxSize = 100.dp
val moveX = max(0, containerSize.width - boxSize.px)
val moveOffset by animateIntOffsetAsState(
targetValue = IntOffset(moveX, 0),
animationSpec = infiniteRepeatable(
tween(
durationMillis = animTime,
easing = easing,
)
),
)
Row(
modifier = Modifier.fillMaxWidth()
) {
Column(
modifier = Modifier.weight(1f)
.background(Color.Red)
.onSizeChanged { containerSize = it }
) {
Box(
modifier = Modifier.size(boxSize)
.offset { moveOffset } // Offset must come before background (why?)
.background(Color.Cyan)
)
}
Column(Modifier.weight(1f)) {
Button(onClick = {
if (animTime == 3000) animTime /= 10
else animTime *= 10
}) {
Text("dur=$animTime")
}
}
}
}