paper.js Racing Track
paper.js Racing Track
我想为我的赛车模拟制作一个图形输出,所以我找到了paper.js.
使用这段代码,我可以绘制特定路线上的每辆车。但我不知道如何改变每一轮的速度:speed_car1, speed_car2, speed_car3。所以我想每轮改变每辆车的速度。
下面是我的例子:
var car1 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'red'
});
var car2 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'blue'
});
var car3 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'yellow'
});
var speed_car1 = 1.0;
var speed_car2 = 1.2;
var speed_car3 = 1.5;
var diagonal = new Point(view.size).length;
var path = new Path();
path.strokeColor = 'black';
path.add(new Point(60, 130));
path.add(new Point(100, 100));
path.add(new Point(200, 50));
path.add(new Point(280, 60));
path.add(new Point(340, 70));
path.add(new Point(500, 250));
path.add(new Point(470, 320));
path.add(new Point(100, 320));
path.add(new Point(60, 130));
path.smooth();
car1.onFrame = function(event) {
var offset = event.count * speed_car1;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
}
car2.onFrame = function(event) {
var offset = event.count * speed_car2;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
}
car3.onFrame = function(event) {
var offset = event.count * speed_car3;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
}
您可以使用类似的计算方法来确定位置:
var car1 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'red'
});
var car2 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'blue'
});
var car3 = new Shape.Rectangle({
from: [0, 0],
to: [10, 5],
fillColor: 'yellow'
});
var speed_car1 = 1.0;
var speed_car2 = 1.2;
var speed_car3 = 1.5;
var diagonal = new Point(view.size).length;
var path = new Path();
path.strokeColor = 'black';
path.add(new Point(60, 130));
path.add(new Point(100, 100));
path.add(new Point(200, 50));
path.add(new Point(280, 60));
path.add(new Point(340, 70));
path.add(new Point(500, 250));
path.add(new Point(470, 320));
path.add(new Point(100, 320));
path.add(new Point(60, 130));
path.smooth();
car1.onFrame = function(event) {
var offset = event.count * speed_car1;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
}
car2.onFrame = function(event) {
var offset = event.count * speed_car2;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
}
car3.onFrame = function(event) {
var offset = event.count * speed_car3;
var loc = path.getLocationAt(offset % path.length);
if (loc) {
this.position = loc.point;
this.rotation = loc.tangent.angle;
}
// compare offset with some epsilon
if ((offset % path.length) < 1) {
// adjust speed
speed_car3 = speed_car3 *2 };
}
相关文章:
- angularjs:自定义直接中的绑定数据在使用“”后不再更新;track-by-;在ng重复中
- Vue.js"track-by-$index”;,如何单独呈现列表项
- 为什么angularjs过滤器不适用于track
- 使用图像作为webkit滚动条 - -webkit-scrollbar-track-piece的最小高度
- JavaScript/jQuery中的Track-pad Tap事件
- 来自控制器的 Mixpanel.track
- Angularjs.undefined不是由“未定义”引起的函数;track-by-;陈述
- ng重复不使用track by更新模型
- Angular Js:您可以将select的默认值与使用'track by'在ng选项中
- 在Angular 1.5中,track by不能与order by一起工作——期望的数组,但收到了
- AngularJS:使用'track by'禁用ng-repeat中的过滤器
- 错误:[ngRepeat:iexp]期望表达式形式为'_item_ in _collection_[track
- Track取消了facebook登录
- n -repeat track by $index打破图像字段排序
- 有可能拉升/拉下投票数据吗?来自di的Track ID.插入到数据库(如MySQL)
- paper.js Racing Track
- ngOptions "track by" expression
- 隐私-Track Chrome扩展's传出的AJAX查询
- 理解 ngRepeat 'track by' 表达式