在最开始的博文中,我用简单的方式实现了一个视差滚动动画的示例。在本文中将对它进行OOP重写,以便能使视差滚动背景动画加入到我的游戏框架之中。
重用的代码段:
HTML:
JavaScript:
下面是新添加的对象:
静态背景对象,继承自基础对象类,用于绘制静态的背景图,可以设置为重复绘制(将repeat置为1):
X方向的滚动对象,继承自静态背景对象,需要传入的参数包括图像、滚动的速度、图像在画布中左右角的X / Y坐标、绘制的顺序。
由于update方法的参数由context改为了canvas,所以引擎类也随之改变
需要特别注意的是Context对象的drawImage方法。该方法的原型之一void drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);中,如果sx, sy, sw, sh超过了图像本身的范围,即所取的图像左上角点不在图像之中,或者所取的图像宽度或者高度超出了图像真实的宽或高,就会报出Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1错误。对drawImage方法想要更多了解的,请查看《HTML5 Canvas初步》·图片