为了账号安全,请及时绑定邮箱和手机立即绑定

疑惑: 为什么 detaibaseInfo2 的 y 属性数值不是从 700 到 260 的递减呢?

疑惑: 为什么 detaibaseInfo2 的 y 属性数值不是从 700 到 260 的递减呢?

PHP
catspeake 2023-04-16 17:13:58
下面的代码,使用TweenMax的onUpdate方法      this.detaibaseInfo2 = new Sprite();            with (detaibaseInfo2) {                 x = 30;                 y = 700;                with (graphics) {                    beginFill(0x826b45, 1);                     drawRect(0, 0, 240, 20);                    endFill();                 }             }       addChild(detaibaseInfo2);    TweenMax.to(detaibaseInfo2, 0.2, {y:260, onUpdate:detaibaseInfo2Update,ease:Strong.easeOut});但是测试了一下:    private function detaibaseInfo2Update():void {       trace("detaibaseInfo2.y="+detaibaseInfo2.y);      if (detaibaseInfo2.y < 270) {           other code ...       }     }输出的结果是:[trace] detaibaseInfo2.y=399.7[trace] detaibaseInfo2.y=399.7[trace] detaibaseInfo2.y=399.7[trace] detaibaseInfo2.y=399.7[trace] detaibaseInfo2.y=399.7[trace] detaibaseInfo2.y=291.45[trace] detaibaseInfo2.y=263.25[trace] detaibaseInfo2.y=260.05[trace] detaibaseInfo2.y=260
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

对于你输出的结果,居然有几个值是一样的,
我尝试你的代码,输出如下

detaibaseInfo2.y=678.4detaibaseInfo2.y=428.15detaibaseInfo2.y=354.35detaibaseInfo2.y=285.3detaibaseInfo2.y=271.8detaibaseInfo2.y=261.55detaibaseInfo2.y=260.3detaibaseInfo2.y=260detaibaseInfo2.y=260

可能的原因:

  1. 你swf输出设置的帧频太小

  2. 尝试换掉Strong,用比如Expo来获取跳跃没那么大的缓动

  3. 如果真的是处理其他脚本影响了动画的执行,尝试替换TweenMaxTweenlite来提高效率


查看完整回答
反对 回复 2023-04-20
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

Greensock的文档中有提到对ease强度的分级,从0到4,strong是4,是加速度最强的easing,在你只tween了0.2秒的动画中,这么强的加速度当然会造成数值的剧烈变动,你想,整个动画才0.2秒时间结束,总共才trace了9次,对象在0.2秒内以最高的加速度移动440像素,那当然一下子就得跳过一半距离了……亲你急速堆太高了……

如果你说为什么第一条不是700,因为是先update再trace的,trace出来的永远是本次update完成时的y值


查看完整回答
反对 回复 2023-04-20
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信