2014-08-30 4 views
-1

Я создаю редактор диаграмм, и он отлично работает, перетащите & капля, копирование и прошлое все работает нормально. Но у меня есть проблемы с изображениями. У меня есть функция render(), которая запускается каждый раз, когда что-то меняется. Внутри функции рендеринга я вызываю код appendImg. Это срабатывает при первом запуске рендера. Но в следующий раз, и я попаду в блок кода else, изображения не будут отображаться на холсте. У меня есть эта if.else логика, потому что, если я запускаю img.onload каждый раз, когда что-то меняется, изображение загружается каждый раз, и я получаю много мерцания на экране. Насколько я могу выделить drawImage dosend, как это, когда img obj был сохранен с массивом, и я наклоняю, кажется, обнимаю его.HTML5 холст и drawImage

var images = []; //An array where images are stored. 

appendImg = function(inx, url, x, y, w, h) { 

    if (!images[inx]) { 
    var img = new Image(); 
    img.onload = function() 
    { 
     dg_context.drawImage(img, x, y, w, h); 
     images[inx] = img; 
    } 
    img.src = url; 
    }else{ 
    var img = images[inx]; 
    console.log(img); 
    dg_context.drawImage(img, x, y, w, h); 
    } 
} 

ответ

0

Попробуйте хранить ИПУ как свойство IMG так INX может запомнятся внутри OnLoad:

var images = []; //An array where images are stored. 

appendImg = function(inx, url, x, y, w, h) { 

    if (!images[inx]) { 
    var img = new Image(); 
    img.onload = function() 
    { 
     dg_context.drawImage(img, x, y, w, h); 
     images[img.index] = img; 
    } 
    img.index=inx; 
    img.src = url; 
    }else{ 
    var img = images[inx]; 
    console.log(img); 
    dg_context.drawImage(img, x, y, w, h); 
    } 
} 
+0

Нет, is'nt это (я попробовать). Но, как я сказал: изображения загружаются при первой загрузке, поэтому они работают внутри .onload. Проблема в том, что похоже, что изображение не загружено, когда im в блоке кода else. Я сделал console.log (img), и он печатает тег с URL-адресом currekt. Но img just issent, нарисованный на последнем drawImage –