在html5画布中滚动/滑动背景

前端之家收集整理的这篇文章主要介绍了在html5画布中滚动/滑动背景前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在建立一个帆布游戏.在这里我想在循环中滑动背景图像.我不知道如何使用 javascript做到这一点.我将使用单个图像,它将连续滑入背景.
提前致谢.

解决方法

有几种方法可以实现这一点,第一种方法将使用put ImageData获得性能,第二种方法只使用drawImage.另请注意,第二种方法代码是从左到右,或从右到左.

http://www.somethinghitme.com/projects/bgscroll/

var ctx = document.getElementById("canvas").getContext("2d"),canvasTemp = document.createElement("canvas"),scrollImg = new Image(),tempContext = canvasTemp.getContext("2d"),imgWidth = 0,imgHeight =0,imageData = {},canvasWidth = 600,canvasHeight = 240,scrollVal = 0,speed =2;

    scrollImg.src = "citybg.png";
    scrollImg.onload = loadImage;

    function loadImage(){
        imgWidth = scrollImg.width,imgHeight = scrollImg.height;
        canvasTemp.width = imgWidth;
        canvasTemp.height =  imgHeight;    
        tempContext.drawImage(scrollImg,imgWidth,imgHeight); 
        imageData = tempContext.getImageData(0,imgHeight);
        render();                
    }

    function render(){
        ctx.clearRect(0,canvasWidth,canvasHeight);

        if(scrollVal >= canvasWidth-speed){
            scrollVal = 0;
        }

        scrollVal+=speed;

        // This is the bread and butter,you have to make sure the imagedata isnt larger than the canvas your putting image data to.
        imageData = tempContext.getImageData(canvasWidth-scrollVal,scrollVal,canvasHeight);
        ctx.putImageData(imageData,imgHeight);
        imageData = tempContext.getImageData(0,canvasWidth-scrollVal,imgHeight);

        setTimeout(function(){render();},10);
    }

第二种方法使用与上面相同的代码,只需将这两个功能更改为以下内容即可.

http://www.somethinghitme.com/projects/bgscroll/scrolldrawimage.html

function loadImage(){
    imgWidth = scrollImg.width,imgHeight = scrollImg.height;
    canvasTemp.width = imgWidth;
    canvasTemp.height =  imgHeight;    
    render();                
}

function render(){
    ctx.clearRect(0,canvasHeight);

    if(scrollVal >= canvasWidth){
        scrollVal = 0;
    }

    scrollVal+=speed;                   
    ctx.drawImage(scrollImg,imgHeight,imgHeight);
    ctx.drawImage(scrollImg,imgHeight);

     // To go the other way instead
     ctx.drawImage(scrollImg,-scrollVal,imgHeight);
     ctx.drawImage(scrollImg,imgHeight);

    setTimeout(function(){render();},10);
}

猜你在找的HTML5相关文章