Canvas 为什么paper.js path.onFrame在从函数更改为null时不停止
我正在尝试使用path.onFrame来设置路径写入的动画,在每个帧中都会添加段。我需要能够在路径完成后停止该路径的特定帧事件,而不删除该路径。以下是我所拥有的:Canvas 为什么paper.js path.onFrame在从函数更改为null时不停止,canvas,path,paperjs,Canvas,Path,Paperjs,我正在尝试使用path.onFrame来设置路径写入的动画,在每个帧中都会添加段。我需要能够在路径完成后停止该路径的特定帧事件,而不删除该路径。以下是我所拥有的: path.onFrame = function(event) { if(pathSegs.length > 0) { if(pathSegs[0].length > 0) { path.add(pathSegs[0].shift()); }
path.onFrame = function(event) {
if(pathSegs.length > 0) {
if(pathSegs[0].length > 0) {
path.add(pathSegs[0].shift());
}
else {
pathSegs.shift();
path = new Path(pathAttrs);
}
}
else {
console.log('chalkboard finished - should only call once');
path.onFrame = null;
//writeText1();
}
}
pathSegs是一个由路径段数组组成的数组,它在每一帧上向画布写入一个段,直到外部数组为空。当我设置path.onFrame=null
时,我希望覆盖原始函数,但是我的控制台日志会在每个帧上继续打印。如果我要设置path.onFrame=otherFunction()
而不是null,那么这两个函数将在每个帧上执行
为什么会这样?我知道我可以解决我的问题,但我想了解正在发生的事情不会让这个版本起作用
注意:最终目标是在此动画结束时触发另一个动画,即writeText1()
这是因为每次新字母开始时,您都会将一个新的
Path
实例重新分配给Path
变量,而不会重置其onFrame
属性。因此,
onFrame
回调实际上只针对最后一个字母重置
您应该做的是使用与此相同的视图onFrame
属性,而不是使用在您的情况下会产生误导的路径onFrame
属性
这是正确的答案
view.onFrame=函数(事件){
如果(路径分段长度>0){
if(路径分段[0]。长度>0){
add(pathSegs[0].shift());
}
否则{
pathSegs.shift();
路径=新路径(路径属性);
}
}
否则{
log('chalkboard finished-应该只调用一次');
view.onFrame=null;
//writeText1();
}
}
谢谢!这很有道理