2013-11-04 72 views

回答

2

代碼有幾個問題。

  • 你沒有onload處理
  • 您正在使用的圖像元素xy性能 - 這是隻讀屬性
  • 您正在使用的圖像元素,而不是一個自定義對象添加屬性
  • 你打算叫draw代替animate
  • 您還沒有清空畫布的每個畫
  • 背景
  • 您正在試圖利用其網址
  • 聚填充應該是循環
  • reqAnimFrame聚不承認非前綴​​外繪製的圖像。
  • 和車去副作用的方法.. :-)

這裏是調整代碼和modified fiddle

var reqAnimFrame = 
    window.requestAnimationFrame || 
    window.mozRequestAnimationFrame || 
    window.webkitRequestAnimationFrame || 
    window.msRequestAnimationFrame || 
    window.oRequestAnimationFrame; 

var c = document.getElementById('canvas'); 
var ctx = c.getContext('2d'); 

c.height = window.innerHeight; 
c.width = window.innerWidth; 

var car = new Image(); 

/// when image is loaded, call this: 
car.onload = animate; 

/// x and y cannot be used, in "worse" case use this but ideally 
/// use a custom object to set x and y, store image in etc. 
car._x = 40; 
car._y = 60; 
car.src = "http://i.imgur.com/8jV4DEn.png"; 

var speed = 5; 

function animate(){ 

    car._y += speed; 

    draw(); 
    reqAnimFrame(animate); 
} 

function draw(){ 

    /// clear background 
    ctx.clearRect(0, 0, c.width, c.height); 

    /// cannot draw a string, draw the image: 
    ctx.drawImage(car, car._x, car._y); 
} 

/// don't start animate() here 
//animate(); 
+0

它沒有工作,不幸的是 - 用小提琴給我看包括我? :) –

+0

@ Nilzone-請參閱更新的答案,該帖子有點誤導相比,小提琴:) – K3N

+0

非常感謝你的超清晰答案:)我仍然有很多東西要學會 –