필요시 표시 할 준비가되도록 이미지 디렉토리를 캔버스에 미리로드하고 싶습니다.jquery/canvas에서 이미지 미리 불러 오기 "Uncaught TypeError : 유형 오류"
I found this question on stackoverflow 허용되는 대답은 매우 유용했습니다. 이 함수는 이미지 위치 배열을 반복하고 캔버스에 미리로드합니다.
일단이 기능을 사용하여 미리로드되면 실제로 표시하는 데 어려움이 있습니다. 나는 그들이 이미로드되어 있기 때문에
img = new Image();
img.src = imgLocation;
img.onload = function() {
context.drawImage(img, 0, 0);
}
는하지만, 내가 난에 context.drawImage
를 제외하고 img.onload
또는 위의 코드 중 하나를 사용할 필요가 없습니다 가정 오전 외 단일 이미지 로딩 방법을 잘 알고 있어요 실제로 이미지를 표시합니다.
이미지를로드하려고 할 때 (내가 예상 할 수있는 것은 모든 이미지가있는 출력 된 배열입니다) 유형 오류이 표시됩니다.
var framesArr = new Array();
var framesAmnt = 300; // we would normally get this number from the PHP side of things
function ldBtn(){
//load all frames locations into framesArr
var i=0;
for (i=0;i<=(framesAmnt-1);i++){
framesArr[i] = "frames/Frame" + i + ".png";
}
//preload them
preloadImages(framesArr, preloadDone);
}
var deferreds = [];
var deferred;
function preloadImages (paths, callback) {
$.each(paths, function (i, src) {
deferred = $.Deferred(),
img = new Image();
deferreds.push(deferred);
img.onload = deferred.resolve;
img.src = src;
});
$.when.apply($, deferreds).then(callback);
}
function preloadDone(){
//any old index number will do. *Shruggs*
context.drawImage(deferreds[2], 0, 0); //this will cause a type error.
}
가 어떻게이 preloadImages
에 의해로드 된 캔버스에 이미지를 표시 할 수 있습니다 내가 어떤 인덱스 (A console.log()
포함) 배열 안에 무엇을 검사 할 때 그것은 [object, Object]
내 코드 코드는 다음과 같습니다 말한다 기능?
img = new Image();
img.src = imgLocation;
img.onload = function()
이 발생하면 어떻게되는지 완전히 이해하지 못한다고 생각합니다. javascript/jquery는 이미지를 무엇으로 저장하나요? 대답이 '객체'인 경우이 배열의 객체를로드하지 않는 이유는 무엇입니까?
제공 할 수있는 조언을 미리 주셔서 감사합니다.
이 소리에 대한 용서를 모두 충격적이고 두뇌가 없지만 내 잘못이 아니라고 제안하는거야? XDD 어느 쪽이든, 내 코드에서 어디에서'new Image()'를 변경해야하는지 제안 해 주시겠습니까? 'preloadImages'에있는 것을 의미합니까? 그것은 여전히 유형 오류가 발생했기 때문입니다. 또한, 내 코드가 정상이며 작동해야한다고 말하고 있습니까? (크롬 버그 제외) 명확히 말하면 조금 혼란 스럽습니다. – Partack
사실, 이미지 객체 대신에'drawImage' 메소드에 Deferred 객체를 전달할 때 문제가 발생했습니다.나는 이것을 고려하여 답을 수정하고 핵심 코드를 기반으로 축소 된 데모를 추가했습니다. –
사실 JavaScript에서는'new Array()'를 사용하지 말고 리터럴 양식'var framesArr = []'을 사용하십시오. Boolean, Boolean, Number, Function 등 모든 네이티브 타입에 사용되는 객체 생성자를 사용할 때 약간의 단점이 있습니다. –