을 설정할 수 없습니다. 각 모자이크 이미지를 다운로드 한 후에 .Done 속성을 true로 설정하려고하는데 어떤 이유로 든 항상 거짓입니다. 내가 뭘 잘못하고 있니? 자바 스크립트 - 이미지로드 함수에서 객체에 Settting 속성, 속성은 때로는 자바 스크립트, 나에게 의미가 X/Y 타일 기반의 사진 모자이크를 생성하는 다음 코드를 고려하지 않습니다 일단 외부 기능
var tileData = [];
function generate()
{
var image = new Image();
image.onload = function()
{
// Build up the 'tileData' array with tile objects from this Image
for (var i = 0; i < tileData.length; i++)
{
var tile = tileData[i];
var tileImage = new Image();
tileImage.onload = function()
{
// Do something with this tile Image
tile.Done = true;
};
tileImage.src = tile.ImageUrl;
}
};
image.src = 'Penguins.jpg';
tryDisplayMosaic();
}
function tryDisplayMosaic()
{
setTimeout(function()
{
for (var i = 0; i < tileData.length; i++)
{
var tile = tileData[i];
if (!tile.Done)
{
tryDisplayMosaic();
return;
}
}
// If we get here then all the tiles have been downloaded
alert('All images downloaded');
}, 2000);
}
지금 어떤 이유로
tile
개체에
.Done
속성은 명시 적으로
tileImage.onload = function()
내부 true로 설정되는 경우에도, 항상 false입니다. 그리고 그 안에
alert()
호출을 배치 했으므로이 함수가 호출되는지 확인할 수 있습니다. 지금은 그냥 무한 루프 안에 붙어있어서
tryDisplayMosaic()
을 끊임없이 호출합니다.
또한 나는 tryDisplayMosaic()
가 호출되기 직전에 루프를 배치하고 그 루프에서 나는 그 .Done
속성이 true이고 alert('All images downloaded');
가 호출되는 것, .Done = true
을 설정합니다.
코드에서와 같이'tileData'가 비어 있으면 for-loops가 실행되지 않기 때문에 올바르게 작동 할 것이라고 확신합니다. 하지만 비어 있지 않은 경우 루프 내에서 함수를 정의하면 작동하지 않습니다. 'tileData'가 정확히 무엇인지 말할 수 있습니까? – Harmen