0
目前我正在製作魚類動畫。我的魚精靈是動畫並能夠在畫布上自由移動。其次,我想添加食物以在畫布上餵食魚類。但是現在我被卡住了,無法讓魚在畫布上畫畫時遊向食物。將精靈圖像移動到選定位置
下面是我的魚精靈是隨機移動:
Fish.prototype.changeDirection = function() {
var me = this;
var speedXSign = Math.random() < 0.5 ? 1 : -1;
var speedYSign = Math.random() < 0.5 ? 1 : -1;
this.speedX = speedXSign * (1 + Math.random() * 1.6);
this.speedY = speedYSign * (1 + Math.random() * 1.6);
var time = 1000 + 2000*Math.random();
setTimeout(function() {me.changeDirection()}, time);
};
Fish.prototype.move = function() {
this.animIndex++;
if (this.animIndex == animFrames.length) this.animIndex = 0;
this.xPos += this.speedX;
if ((this.xPos + this.frameWidth * this.frameScale/1.8) >= canvas.width && this.speedX > 0 ||
(this.xPos - this.frameWidth * this.frameScale/1.8) <= 0 && this.speedX <= 0) {
this.speedX = -this.speedX;
}
this.yPos += this.speedY;
if ((this.yPos + this.frameHeight * this.frameScale/1.8) >= canvas.height && this.speedY > 0 ||
(this.yPos - this.frameHeight * this.frameScale/1.8) <= 0 && this.speedY <= 0) {
this.speedY = -this.speedY;
}
};
,現在當我的onclick在畫布上,將食物與X和Y偏移量出現一起。
function addFood(foodArray){
var iiimage = new Image();
iiimage.src = 'Images/redFood.png';
for(var m = 0 ; m<foodArray.length;m++){
var x = foodArray[m].x;
var y = foodArray[m].y;
context.drawImage(iiimage,x,y,50,50);
}
}
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
canvas.onmousedown = function(e){
foodX = getMousePos(canvas,e).x;
foodY = getMousePos(canvas,e).y;
food = {x:foodX,y:foodY};
foodArray.push(food);
console.log('('+foodX+','+foodY+')');
console.log(food);
console.log(foodArray.length);
}
是否有可能使魚精靈改變它的方向最近的食物可用,然後返回到它的魚精靈已與食品接觸後隨機運動。
這裏是我的小提琴:http://jsfiddle.net/Bernard_9/bV4r6/
是的,它適用於我在Windows和Ubuntu上使用Chrome。 –
我可以問你另一個問題嗎?這是否可以在畫布上放置一個按鈕來啓用/禁用饋送?@JaredNeil – TypeB
從來沒有自己做過,但[這個問題](http://stackoverflow.com/questions/4797748/can-i-put-an-html-button-inside-the-canvas)似乎可能會回答你的問題題。 –