收藏
回答

animation的相关操作必须要放在setTimeout里面吗?

你好,我把animation的创建放在onShow里面,即使规定了duration,在运行时,打开这个页面,动画都是瞬间完成,只有放在setTimeout里,才能体现出duration

  onShow: function () {

    var animation = wx.createAnimation({

      duration: 6000,

      timingFunction: 'linear',

      delay:500

    });

    this.animation = animation;

    animation.translate(150,0).step({duration:6000,delay:1000});

    this.setData({

      animationData:animation.export()

    })

    this.animation =  animation;

    setTimeout(function () {

      animation.translate(-Number(this.data.announcementText.length)*14, 0).step();

      this.setData({

        animationData: animation.export()

      })

    }.bind(this), 1000)

  },


回答关注问题邀请回答
收藏

2 个回答

  • 卢霄霄
    卢霄霄
    2020-01-20

    onReady里 或者setData的回调里

    2020-01-20
    有用 1
    回复 6
    • 怕黑の蝙蝠侠
      怕黑の蝙蝠侠
      2020-01-20
      okay 谢谢了,真的管用,麻烦能解释下为什么吗?
      2020-01-20
      回复
    • 卢霄霄
      卢霄霄
      2020-01-20回复怕黑の蝙蝠侠
      确保界面渲染好了,再设上动画
      2020-01-20
      回复
    • 怕黑の蝙蝠侠
      怕黑の蝙蝠侠
      2020-01-20
      好的,还有个问题哈,开始creatAnimation的时候设置了一个
      duration ,后来每次动画操作的step()中也有这个参数,文档说默认step中的duration为400,也可以另设,那每个动画操作的执行时间到底哪个算啊
      2020-01-20
      回复
    • 卢霄霄
      卢霄霄
      2020-01-20回复怕黑の蝙蝠侠
      优先级是 step的duration > create时候的 > 默认值400
      2020-01-20
      回复
    • 怕黑の蝙蝠侠
      怕黑の蝙蝠侠
      2020-01-20
      okay谢谢
      2020-01-20
      回复
    查看更多(1)
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-01-20

    谢邀。

    不用专门setTimeOut但是同一个动画你得完成后,渲染好后再export

    2020-01-20
    有用
    回复 3
    • 怕黑の蝙蝠侠
      怕黑の蝙蝠侠
      2020-01-20
      好的,谢谢,那么duration是按createAnimation里的算还是step里的呢?
      2020-01-20
      回复
    • Admin ²º²⁴
      Admin ²º²⁴
      2020-01-20回复怕黑の蝙蝠侠
      一次step用掉的时间是createAnimation里面的duration时间
      2020-01-20
      回复
    • 怕黑の蝙蝠侠
      怕黑の蝙蝠侠
      2020-01-20
      okay谢了
      2020-01-20
      回复
登录 后发表内容
问题标签