【发布时间】:2022-09-26 03:34:07
【问题描述】:
我正在尝试使用投掷动画使我的视图从边框反弹。
目前我的冰球在我投掷时可以工作。但是,fling 只是卡在边界上,不会反弹。如何让我的冰球弹起?
这是我的 onFling 函数
override fun onFling(
e1: MotionEvent, e2: MotionEvent,
velocityX: Float, velocityY: Float
): Boolean {
flingAnimationX = makeXFlingAnimation(initVelocity = velocityX, goalAchieved)
flingAnimationY = makeYFlingAnimation(initVelocity = velocityY, goalAchieved)
flingAnimationX.start()
flingAnimationY.start()
//get location of puck
val location = IntArray(2)
puck.getLocationOnScreen(location)
val x = location[0]
val y = location[1]
if (x.toFloat() == puckMaxX) FlingAnimation(puck, DynamicAnimation.X).apply { setStartVelocity(-velocityX)
setMinValue(puckMinX)
setMaxValue(puckMaxX)
setFriction(friction)
start()}
if (x.toFloat() == puckMinX) FlingAnimation(puck, DynamicAnimation.X).apply{ setStartVelocity(-velocityX)
setMinValue(puckMinX)
setMaxValue(puckMaxX)
setFriction(friction)
start()}
if (y.toFloat() == puckMaxY) FlingAnimation(puck, DynamicAnimation.Y).apply { setStartVelocity(-velocityY)
setMinValue(puckMinX)
setMaxValue(puckMaxX)
setFriction(friction)
start()}
if (y.toFloat()== puckMinY) FlingAnimation(puck, DynamicAnimation.Y).apply { setStartVelocity(-velocityY)
setMinValue(puckMinY)
setMaxValue(puckMaxY)
setFriction(friction)
start()}
return true
任何帮助表示赞赏!
-
不幸的是我之前没有使用过弹跳动画,但我认为弹跳需要插入器
-
您可以像我正在做的那样检查视图位置并使用 If 语句吗?
-
如果我理解得很好,您只改变速度而不改变位置
-
抱歉,如果不清楚。但是用户将滑动冰球,因此位置会改变。
-
哦,你想让用户喜欢扔它,当它碰到屏幕边框时它会不断改变它的位置,你确定调用了 if 语句吗?