Animation 如何根据持续时间在PaperJS中为直线或圆弧绘制动画?
我有三个问题:Animation 如何根据持续时间在PaperJS中为直线或圆弧绘制动画?,animation,paperjs,Animation,Paperjs,我有三个问题: 我创建了一个用于绘制直线的。这很有效,但我肯定这不是最好的方法。有人可以建议对我的代码进行一些改进吗 伪代码: onFrame = function() { -Calculate % of the line that have been drawn -Find Point between two Points -Draw line until this new point } 我的技术适用于直线,但如果我想根据持续时间绘制一条直线,我该怎么做 如果我想在绘
- 我创建了一个用于绘制直线的。这很有效,但我肯定这不是最好的方法。有人可以建议对我的代码进行一些改进吗
onFrame = function() {
-Calculate % of the line that have been drawn
-Find Point between two Points
-Draw line until this new point
}
- 我的技术适用于直线,但如果我想根据持续时间绘制一条直线,我该怎么做
- 如果我想在绘图中添加缓和效果,该怎么办
getLocationAt
:
for(var i = 0; i < 100; i++) {
var point = path.getLocationAt(i);
newPath.add(point);
}
for(变量i=0;i<100;i++){
var point=path.getLocationAt(i);
添加(点);
}
(为了解释我的想法,这只是一个粗略的草图)。您可以使用
getLocationAt
:
for(var i = 0; i < 100; i++) {
var point = path.getLocationAt(i);
newPath.add(point);
}
for(变量i=0;i<100;i++){
var point=path.getLocationAt(i);
添加(点);
}
(为了解释我的想法,这只是一个粗略的草图)。- 我发现创建路径比向路径中添加线段更容易
从两个段中移出,并每帧移动最后一个段。如果您创建一个
新的
从你的终点和起点的差异点
,你 可以根据您的选择轻松计算每帧的位置 持续时间点
- 对于圆弧,更容易在每一帧创建一个新的圆弧。这个
格式在这里工作得很好。只需旋转 克隆您的起点Path.Arc(from,through,to)
关于您的中心点
by点
和完成百分比/2*numberOfDegrees
获取每帧的完成百分比* numberOfDegrees
到
值。如果 要创建一个完整的圆,请确保
为 略大于360。否则,numberOfDegrees
可能找不到合适的 解决方案Arc()
- 您基于时间的百分比方法工作正常,但您需要考虑
当
在1之前结束太远时完成百分比
- 如果要进行放松,请通过
适当的功能。搜索“乙状结肠松弛”。对于
例如:
percent_completed=Math.pow(percent_completed.5)代码> 这可能是复杂的,因为你想使它
- 不是每帧检查一个布尔值,而是附加一个
处理程序 安装时,并在完成后移除处理程序。有关更多详细信息,请参阅onFrame
- 如果使用的是
表示法,则无需向构造函数添加paperscript
前缀paperscript
- 我也不知道为什么要在paperscript中包含jQuery函数
- 我发现创建路径比向路径中添加线段更容易
从两个段中移出,并每帧移动最后一个段。如果您创建一个
新的
从你的终点和起点的差异点
,你 可以根据您的选择轻松计算每帧的位置 持续时间点
- 对于圆弧,更容易在每一帧创建一个新的圆弧。这个
格式在这里工作得很好。只需旋转 克隆您的起点Path.Arc(from,through,to)
关于您的中心点
by点
和完成百分比/2*numberOfDegrees
获取每帧的完成百分比* numberOfDegrees
到
值。如果 要创建一个完整的圆,请确保
为 略大于360。否则,numberOfDegrees
可能找不到合适的 解决方案Arc()
- 您基于时间的百分比方法工作正常,但您需要考虑
当
在1之前结束太远时完成百分比
- 如果要进行放松,请通过
适当的功能。搜索“乙状结肠松弛”。对于
例如:
percent_completed=Math.pow(percent_completed.5)代码> 这可能是复杂的,因为你想使它
- 不是每帧检查一个布尔值,而是附加一个
处理程序 安装时,并在完成后移除处理程序。有关更多详细信息,请参阅onFrame
- 如果使用的是
表示法,则无需向构造函数添加paperscript
前缀paperscript
- 我也不知道为什么要在paperscript中包含jQuery函数
// move path along an arc
path.position.x *= Math.cos(delta);
path.position.y *= -Math.sin(delta)*2;
查看以查看有关其工作原理的更多详细信息,这里有一个示例,我正在使用库中的插值函数,但基础是
// move path along an arc
path.position.x *= Math.cos(delta);
path.position.y *= -Math.sin(delta)*2;
查看以查看有关其工作原理的更多详细信息