Я написал javascript, который должен прокручивать изображения по экрану с помощью холста. Я не могу заставить это работать и буду признателен за любую помощь. Я смог заставить это работать с использованием одного изображения и без массива, но я хочу иметь возможность использовать массив и загружать картинки один за другим с небольшим пространством между ними.Прокрутка изображений с помощью javascript
Here's a JSFiddle with my code.
var img = new Image[];
img[0] = new Image;
img[0].src = 'Images/Juniors.jpg';
img[1] = new Image;
img[1].src = 'Images/minis.jpg';
img[2] = new Image;
img[2].src = 'Images/senior.jpg';
var CanvasXSize = 1040;
var CanvasYSize = 240;
var speed = 40; //lower is faster
var scale = 1.05;
var y = -4.5; //vertical offset
var dx = 0.75;
var imgW;
var imgH;
var x = 0;
var clearX;
var clearY;
var ctx;
img.onload = function() {
imgW = img.width*scale;
imgH = img.height*scale;
if (imgW > CanvasXSize) { x = CanvasXSize-imgW; } // image larger than canvas
if (imgW > CanvasXSize) { clearX = imgW; } // image larger than canvas
else { clearX = CanvasXSize; }
if (imgH > CanvasYSize) { clearY = imgH; } // image larger than canvas
else { clearY = CanvasYSize; }
ctx = document.getElementById('canvas').getContext('2d'); //Get Canvas Element
}
function draw() {
//Clear Canvas
ctx.clearRect(0,0,clearX,clearY);
//If image is <= Canvas Size
if (imgW <= CanvasXSize) {
//reset, start from beginning
if (x > (CanvasXSize)) { x = 0; }
//draw aditional image
if (x > (CanvasXSize-imgW)) {
ctx.drawImage(img, x-CanvasXSize+1, y, imgW, imgH);
}
}
//If image is > Canvas Size
else {
//reset, start from beginning
if (x > (CanvasXSize)) { x = CanvasXSize-imgW; }
//draw aditional image
if (x > (CanvasXSize-imgW)) { ctx.drawImage(img[0],x-imgW+1,y,imgW,imgH); }
}
for(i = 0; i < img.length; i++) {
ctx.drawImage(img[i],x,y,imgW,imgH);
//amount to move
x += dx;
}
}
Каким образом это не работает? Создайте [JSFiddle] (http://jsfiddle.net/) со своим JavaScript и соответствующими HTML и CSS, чтобы мы могли видеть, что происходит и экспериментировать. – doppelgreener
Вот ссылка на JSFiddle http://jsfiddle.net/dmbarry/CJXzL/ –
Примечание: 'var img = new Array [];' должно быть 'var img = new Array();' (обратите внимание на скобки) или просто 'var img = [];' (эти два [идентичны в этом случае] (http://stackoverflow.com/q/931872/254830)). Это вызвало синтаксическую ошибку. – doppelgreener