2011-12-01 13 views
10

HTML5 kanvasındaki görüntülerin içe aktarılması ve görüntülenmesi ile ilgili bir eğiticiyi takip ediyorum. Her şey iyi çalışıyor, ben görüntüyü değiştirmeye çalışana kadar. Örneğin, görüntümde sarı bir daire olacak ve komut dosyası düzgün çalışıyor. Ancak, resmin kendisini Paint'te açıp çemberi kırmızıya çevirip sayfayı yenilediğimde, sayfayı el ile ikinci kez tıklayıp tekrar yenileyinceye kadar daire görünmez. Görüntü yüklenmeden önce bunu çizim çünkü daire muhtemelen görünmüyorHTML5'e çizilmiş resim İlk yükte tuval düzgün görüntülenmiyor

var topMap = new Image(); 
topMap.src = "topMap.png"; 

function drawMap() { 
    context.clearRect(0, 0, WIDTH, HEIGHT); 
    context.drawImage(topMap, 0, 0); 
} 

function init() { 
    drawMap(); 
} 

init(); 
+1

tarayıcı önbelleğe alma, bir önbellek yüklemeye zorlama –

+1

Tarayıcı önbellekleme yapmıyor, sadece yeni resim yüklemesini beklemiyor –

cevap

17

: İşte kullanıyorum kod parçacığı olduğunu.

// Lets not init until the image is actually done loading 
topMap.onload = function() { 
    init(); 
} 

görüntü şimdi önbelleğine önceden yüklenmiş olduğu için yenileme olduğunu vurmak sonra çalışır nedeni: için son deyimi değiştirin.

Resim çizmeye çalışmadan önce, her zaman resim yüklenmesini beklemek istersiniz veya bunun yerine tuvalde hiçbir şey görünmez.

+5

Daha basit, 'topMap.onload = drawMap; '. Not: ''load '_before_' src' 'yi ayarlamalısınız. (Http://stackoverflow.com/questions/4776670/should-setting-an-image-src-to-dataurl-be-available-immediately) . Yani: 'var topMap = yeni Görüntü; topMap.onload = drawMap; topMap.src = "topMap.png"; – Phrogz

+0

Teşekkürler, çözdüm ve sorunumu açıkladı :) – Jarek

+0

Phrogz'un tavsiyelerini de aldığınızdan emin olun! –

İlgili konular