Javascript 无法使用fabricjs向后和第四次增长和收缩对象

Javascript 无法使用fabricjs向后和第四次增长和收缩对象,javascript,fabricjs,Javascript,Fabricjs,在我的例子中,我有一个物体,一个圆圈,我想让它来回生长和收缩3次,就像一颗闪烁的星星 var计数器; const canvas=new fabric.canvas'gameCanvas'{ 选择:false }; fabric.Object.prototype.originX=fabric.Object.prototype.originY='center'; 让我们转一圈; document.addEventListener'DOMContentLoaded',函数{ 圆圈=makeCircl

在我的例子中,我有一个物体,一个圆圈,我想让它来回生长和收缩3次,就像一颗闪烁的星星

var计数器; const canvas=new fabric.canvas'gameCanvas'{ 选择:false }; fabric.Object.prototype.originX=fabric.Object.prototype.originY='center'; 让我们转一圈; document.addEventListener'DOMContentLoaded',函数{ 圆圈=makeCircle52.69,17.77; canvas.addcircle; }; document.getElementById'animateBtn'.addEventListener'click',异步函数{ 计数器=0; 常量结果=等待动画循环,1; console.logresult; }; 函数makeCirclex,y{ 返回新织物。圈{ 左:x,, 上图:y, 冲程宽度:2, 半径:10, 填充:“黄色”, 笔划:“666”, 可选:false, 鼠标悬停光标:“默认值”, 哈斯:错, hasBorders:错误 }; } 函数animateCircle,dir{ const minScale=1; 常数maxScale=2; 返回新PromiseSolve=>{ 圈出{ scaleX:dir?maxScale:minScale, scaleY:dir?maxScale:minScale }, { easing:fabric.util.ease.easeOutCubic, 时长:3000, onChange:canvas.renderAll.bindcanvas, 未完成:函数{ 如果计数器>4{ 解决“已完成点的动画制作”; }否则{ 如果dir==1 AnimateCircle,0; 其他的 动画片,1; } 计数器++; } }; }; }
动画实际上,您确实可以在控制台上打印结果。函数返回一个承诺。您可以使用以下行打印该对象:console.logresult;您可以在控制台上看到它的输出。你不要等待承诺来解决。Promise异步工作。您只需在控制台上打印即可。所以它处于待定状态


在回拨时,您将在每个动画完成时返回一个新的承诺。只需返回一次承诺,并在承诺内执行动画

让我们来反击; const canvas=new fabric.canvas'gameCanvas'{ 选择:false }; fabric.Object.prototype.originX=fabric.Object.prototype.originY='center'; 让我们转一圈; document.addEventListener'DOMContentLoaded',函数{ 圆圈=makeCircle52.69,17.77; canvas.addcircle; }; document.getElementById'animateBtn'。addEventListener'click',onBtnClick; 异步函数onBtnClick{ 计数器=0; 常量结果=等待动画循环,1; console.logresult; }; 函数makeCirclex,y{ 返回新织物。圈{ 左:x,, 上图:y, 冲程宽度:2, 半径:10, 填充:“黄色”, 笔划:“666”, 可选:false, 鼠标悬停光标:“默认值”, 哈斯:错, hasBorders:错误 }; } 函数animateCircle,dir{ const minScale=1; 常数maxScale=2; 返回新的PromiseSolve,拒绝=>{ 动画循环,方向 函数animatecircle,dir{ 圈出{ scaleX:dir?maxScale:minScale, scaleY:dir?maxScale:minScale }, { easing:fabric.util.ease.easeOutCubic, 时长:3000, onChange:canvas.requestRenderAll.bindcanvas, 未完成:函数{ 如果计数器>4{ 解决“已完成点的动画制作”; 回来 }否则{ 如果dir==1 animatecircle,0; 其他的 动画圈,1; } 计数器++; } }; } }; }
AnimateAded代码等待承诺完成,但仍然没有打印结果“Finished animating the point”与我共享代码笔链接,以便我可以尝试您的代码。尝试类似于承诺的结果。thenfunctionvalue{console.logvalue;//预期输出:foo};