画布上对象的多个实例
several instances of object on canvas
我做了这个小脚本,使图像上下弹跳(工作正常)。
现在我正在尝试在我的画布上添加更多图像(该对象的更多实例),但由于某些原因,它仍然只显示一个。
如果有人能发现我错过了什么,将不胜感激。
var img = function() {
this.props = {
x: Math.floor(Math.random() * W + 1),
y: 50,
radius: 40,
// Velocity
vy: 1,
// angle
angle: 0,
direction: 1
};
var self = this;
this.draw = function() {
ctx.drawImage(im, self.props.x, self.props.y);
},
this.update = function() {
ctx.clearRect(0, 0, W, H);
self.draw();
self.props.y += self.props.vy;
self.props.vy += gravity;
if(self.props.y + self.props.radius > H) {
self.props.y = H - self.props.radius;
self.props.vy *= -bounceFactor;
self.props.direction *= -1;
}
};
};
// my instances
var el = new img();
var el2 = new img();
var el3 = new img();
function main() {
el.update();
el2.update();
el3.update();
}
setInterval(main, 1000/60);
这是完整的代码:小提琴
清除所有汽车的 while 画布,因此只能显示最后一辆。
只需在 main() 函数中清除一次。
你在 DOM 中使用单个图像实例...您的小提琴正在使用闭包范围内的src
引用单个图像实例。
编辑:在您的代码中,im
实际上并不是指某些东西,而是在所有img()
实例之间共享。
相关文章:
- 使用jQuery获取Dropzone实例/对象
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- JavaScript:如果现有对象被实例化为具有特定值,如何创建警报
- 用javascript创建另一个对象的实例
- Backbone relational无法实例化两个RelationalModel对象
- 创建一个类,该类使用es6类语法将Function对象创建为实例
- 为什么属性存在于对象实例上,即使其原型发生了更改
- 如何在angularJS中获得对指令对象实例的引用
- 无法将值从实例对象传输到父类的实例数组中
- Javascript 原型 - 不仅适用于实例对象
- 如何在 angular 的控制器中使用用户定义的类实例/对象
- 三.js不是三的实例.对象3D
- 实例对象的私有状态的以下实现存在缺陷
- ES6 setter -保持对象干净//映射实例对象上的参数
- 直接从空格键访问模板实例对象属性
- 理解AngularJS $resource()返回什么(类或实例对象)
- 在Chrome原生消息传递:有多长是本地应用实例对象的生命周期
- 集合/实例对象样式为没有proto的vie javascript