【问题标题】:Making view bounce off border使视图从边框反弹
【发布时间】: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 语句吗?

标签: android kotlin


【解决方案1】:
  1. 实现onAnimationEndListner
  2. 在 EndListner 中使用 value 属性来检查边框是否被击中
  3. 设置 -velocity 以启动弹跳动画以获得反弹效果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多