2012-03-17 3 views
0

, имеющий проблему с моим циклом for, я уверен, что это что-то простое, что мне не хватает, но я пытаюсь получить три загруженных изображения, чтобы сдвинуть 10 шагов вниз, а затем остановить (с тремя изображениями, остановленными с 10 приращениями вниз. , когда я запускаю код, он работает, но он убегает от страницы (не останавливается на 10). Может ли кто-нибудь увидеть проблему? любая помощь будет замечательной!Установка предельного условия для цикла

window.addEventListener('load', eventWindowLoaded, false); 

function eventWindowLoaded() 
{ 
    canvasApp(); 
} 


function canvasSupport() 
{ 
    return Modernizr.canvas; 
} 

function canvasApp() 
{ 
    if (!canvasSupport()) 
    { 
     return; 
} 

    else 
{ 
    theCanvas = document.getElementById("canvas"); 
    var context = theCanvas.getContext("2d"); 
} 

var toes = new Image(); 
toes.addEventListener('load', eventShipLoaded , false); 
toes.src = "images/toes.png"; 
var larry = new Image(); 
larry.addEventListener('load', eventShipLoaded , false); 
larry.src = "images/larry.png"; 
var barry = new Image(); 
barry.addEventListener('load', eventShipLoaded , false); 
barry.src = "images/barry.png"; 

function eventShipLoaded() 
{ 
    startUp(); 
} 

y=0; 

function drawScreen() 
{ 

    for (x = 0; x < 1; x++) 
    { 
      context.fillStyle = "#aaaaaa"; 
      context.fillRect(0,0,500,500); 
      context.drawImage(toes,0,y,114,339); 
      context.drawImage(larry,110,(y+81),86,258); 
      context.drawImage(barry,203,(y+72),98,265); 
      y+=1; 
    } 
} 


function startUp() 
{ 
    setInterval(drawScreen,5); 
} 
} 
+0

Где находится цикл «while»? –

+0

Я не вижу ни одного цикла while в этом коде? Что такое 'for (x = 0; x <1; x ++)' используется для? Эта петля не имеет никакого смысла. – Niko

+0

Извините, я испортил, был за цикл, а не пока. если я только увеличил на 1 до тех пор, пока цикл for достигнет 10, мне все равно нужно было бы ограничить мой y ?, извините, прищурилось, пыталось как броски, так и whiles, в любом случае, было циклом for. – user1075004

ответ

0

вы должны ограничить значение у. у вас есть только

y+=1; 
+0

Извините, я испортил, был за цикл, а не пока. если я только увеличил на 1 до тех пор, пока цикл for достигнет 10, мне все равно нужно было бы ограничить мой y? – user1075004

0

Вы используете «setInterval», не отключая таймер. Вот почему изображения продолжают двигаться. Поэтому просто подсчитайте, сколько раз вызывается «drawScreen» и останавливается таймер после 10-го звонка:

var movements = 0; 
var timer = null; 

function drawScreen() { 
    // ... original code ... 

    if (timer && ++movements == 10) { 
     clearInterval(timer); 
    } 
} 

function startup() { 
    timer = setInterval(drawScreen, 5); 
} 
+0

все еще runnin off-- y = 0; \t var movement = 0; \t var timer = null; \t \t \t функция drawScreen() { \t \t \t \t \t для (х = 0; х <1; х ++) \t \t { \t \t \t \t context.fillStyle = "#aaaaaa"; \t \t \t \t context.fillRect (0,0,500,500); \t \t \t \t context.drawImage (jellytoes, 0, y, 114,339); \t \t \t \t context.drawImage (larry, 110, (y + 81), 86,258); \t \t \t \t контексте.DrawImage (Бэрри, 203, (у + 72), 98265); \t \t \t \t y + = 1; \t \t \t \t } \t \t \t \t , если таймер (&& ++ движения == 10) \t \t { \t clearInterval (таймер); \t} \t \t \t \t \t} \t \t \t функции StartUp() \t { \t \t таймера = setInterval (drawScreen, 5); \t} – user1075004

+0

извините, я не очень разбираюсь в том, как работать с публикацией комментариев/комментариев к другим сообщениям – user1075004

Смежные вопросы