2015-01-19 3 views
0

배열에 저장된 이미지 세트를 사전로드하는 JS 함수가 있습니다.이 이미지는 트리거 될 때 결국 캔버스에 그려집니다. iPad 및 이전 iPhones의 메모리 크기에 몇 가지 문제가 있습니다. 따라서 일단 설정된 수의 이미지가로드되면 앱은 홀트로 갈아 탄다. 따라서 문제는 프리 로더에 있다고 생각하게 만듭니다.자바 스크립트 이미지 프리 로더 메모리 누수

누구든지이 부분을 밝힐 수 있거나 어떤 방향으로 향하게해도 좋을 것입니다.

canvas.preload = function(images){ 

    var 
    d = $.Deferred(), 
    // Empty Array 
    a = []; 

    // For each image in batch 
    _.each(images, function(val, i) { 

    var img = new Image(); 

    img.onload = function(){ 

     // Push Image and index into array 
     a.push({image:this, index:i}); 

     // Sort this array by the index 
     var sortedArray = _.sortBy(a, 'index'); 

     // When total batch is loaded return it 
     if (a.length === images.length) { 
     // Pluck just image from array 
     d.resolve(_.pluck(sortedArray, 'image')); 
     } 

    } 

    img.src = images[i]; 

    }); 

    return d; 

} // preload(); 

답변

0

여기서 문제는 모바일 장치에서 설정 한 메모리 제한 때문입니다.

이미지가 일 수 있습니다.이 너무 많습니다. 큰 경우 치수가 현명하거나 한눈에 일 수 있습니다. 문제는 그들이 어떤 식 으로든 당신에게 경고하지 않는다는 것입니다 : 그들은 결코 그것들을 결코 다운로드하지 않습니다..

이러한 경우 가장 좋은 방법은 기기에 따라 항상 다른 자산을 제공하는 것입니다. 예를 들어, 클라이언트가 모바일 장치를 사용하는 경우, 더 작은 버전의 이미지를 다운로드하십시오.

+0

안녕하세요. Stefano, 답장을 보내 주셔서 감사합니다. 플랫폼에 따라 다른 크기의 자산을 제공한다고 언급 했어야합니다. 합계 3 크기; 데스크톱, 태블릿 및 모바일. – Neale