关于程序化编辑动画剪辑中,同样的代码,web平台可正常播放,但是windows平台无法播放

  • Creator 版本:3.8.5

  • 目标平台:Windows

  • 重现方式:看具体代码

  • 首个报错:无

  • 之前哪个版本是正常的:

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:Windows10

  • 重现概率:100%

LoadSpriteAnim(){

   console.log("LoadSpriteAnim");

   let sf1_1:SpriteFrame=null;

   let sf1_2:SpriteFrame=null;

   resources.load("Animations/SpriteAnimation/demoAnim/base1/base1-1/spriteFrame",SpriteFrame,(err,sf)=>{

       if(!err&&sf){

           console.log("base1-1 succeed");

           sf1_1=sf;

       }else{

           console.log("base1-1 failed");

       }

   });

   resources.load("Animations/SpriteAnimation/demoAnim/base1/base1-2/spriteFrame",SpriteFrame,(err,sf)=>{

       if(!err&&sf){

           console.log("base1-2 succeed");

           sf1_2=sf;

       }else{

           console.log("base1-2 failed");

       }

   });

   

   this.scheduleOnce(()=>{

        console.log("AnimationClip");

        // 添加Sprite组件

        const nodeSprite=this.spriteAnimNode.addComponent(Sprite);

        // 新建AnimationClip动画剪辑

        const animationClip = new AnimationClip("base1");

        animationClip.duration = 0.4;

        // 新建动画剪辑轨道

        const track = new animation.ObjectTrack<SpriteFrame>();

        track.path=new animation.TrackPath().toComponent(Sprite).toProperty('spriteFrame');

        const [sfPath]=track.channels();

        // 为 x 通道的曲线添加关键帧

        sfPath.curve.assignSorted([

            [0.0,sf1_2],

            [0.2,sf1_1],

            [0.4,sf1_1]

        ]);

        // 最后将轨道添加到动画剪辑以应用

        animationClip.addTrack(track);

        // 设置动画剪辑循环模式

        animationClip.wrapMode=AnimationClip.WrapMode.Loop;

        // 添加及设置动画组件

        const anim=this.spriteAnimNode.addComponent(AnimationComponent);

        anim.addClip(animationClip,"base1");

        anim.defaultClip=animationClip;

        //anim.playOnLoad=true;

        // web平台可正常播放,windows平台不能正常播放

        anim.play();

        // web和windows平台都可正常播放

        //anim.play("base1");

   },3);

}

web平台:

Windows平台:

在web平台上能正常加载出来白色方块并能正常播放动画,但是在Windows平台,根据我的调试,应当是白色方块正常加载完成了,但是动画却没正常播放,所以导致红色标记处没有显示出来。
之后我将代码anim.play();替换为anim.play(“base1”);就都能正常播放动画了,不知道是不是Windows端动画的play()方法实现得有问题导致的两个平台表现不一致。