HTML5制作仿jQuery效果
开言本篇文章通过开源html5引擎lufylegend实现JQuery滑动效果。能使一个矩形来回减速加速滑行。由于用到了html5里的canvas,所以如果大家要测试程序,请用支持html5的浏览器打开。源码下载稍后提供。初始化页面... |
开言
本篇文章通过开源html5引擎lufylegend实现JQuery滑动效果。能使一个矩形来回减速加速滑行。由于用到了html5里的canvas,所以如果大家要测试程序,请用支持html5的浏览器打开。源码下载稍后提供。
初始化页面
首先我们来看看html文件里的代码:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>html5 game - 仿jquery</title>
- <script type="text/javascript" src="./js/lufylegend-1.6.1.min.js"></script>
- <script type="text/javascript" src="./js/main.js"></script>
- </head>
- <body>
- <div id="mylegend">loading……</div>
- </body>
- </html>
也许有人疑问,说是用html5,怎么不见canvas标签???其实当你使用lufylegend开发时,根本不需要加入canvas标签。只需要调用该引擎中的init函数并向参数赋值就能自动将canvas标签加到html文件中。
接下来让我们看看init用法:init(speed,id,width,height,function,type);其中speed代表页面更换速度,id代表传入的一个div的id,库件进行初始化的时候,会自动将canvas加入到此div内部,width和height分别代表页面大小,function就是初始化完成后调用的函数,最后一个参数type为null时,会先进行页面的onload操作,如果init函数调用是在onload之后,那么需要将此参数设为LEvent.INIT。
我在js里是这样调用init的:
- init(50,"mylegend",800,400,main);
开始移动
看完初始化部分,我们不仿来看看是怎样做到能使一个矩形来回减速加速滑行。首先我们来看看main.js里的代码:
- init(50,"mylegend",800,400,main);
- var backLayer;
- var speed = 20,x = 0;
- function main(){
- //加入层
- initLayer();
- //开始移动
- setInterval(function(){move();},10);
- }
- function initLayer(){
- //加入背景层
- backLayer = new LSprite();
- addChild(backLayer);
- }
- function move(){
- //清空背景
- backLayer.graphics.drawRect(0,"white",[0,0,800,400],true,"white");
- //绘制矩形
- backLayer.graphics.drawRect(0,"dimgray",[x+=speed,0,200,200],true,"gray");
- //将速度逐渐变小
- speed--;
- //当速度小于或等于-20时,将速度重新设为20
- if(speed <= -20){
- speed = 20;
- }
- }
当我初始化完毕后,我加入了层,也就LSprite,用法如下:
■作用:
LSprite 类是基本显示列表构造块,一个可显示图形并且也可包含子项的显示列表节点。
■可用属性:
type:类型
x:坐标x
y:坐标y
scaleX:X坐标方向上的缩放比例
alpha:透明度
rotate:旋转角度
visible:是否可见,当设为false的时候,该LBitmap对象不可视,且内部所有处理都将停止
childList:该对象的所有子项
graphics:指定属于此 LSprite 的 Graphics 对象,在此 LSprite 中可执行矢量绘图命令。
box2dBody:结合box2dweb后,创建的body2d
mask:遮罩
举个例子:
- var loader;
- init(200,"mylegend",500,350,main);
- function main(){
- loader = new LLoader();
- loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);
- loader.load("img.png","bitmapData");
- }
- function loadBitmapdata(event){
- var bitmapdata = new LBitmapData(loader.content,0,0,64,64);
- var bitmap = new LBitmap(bitmapdata);
- var layer = new LSprite();
- addChild(layer);
- layer.addChild(bitmap);
- }
当层初始化完成后,就可以开始移动矩形了。首先我用setInterval不断地画矩形,为了不让矩形重叠,我让它每画一次,清空一次屏幕。
- //清空背景
- backLayer.graphics.drawRect(0,"white",[0,0,800,400],true,"white");
- //绘制矩形
- backLayer.graphics.drawRect(0,"dimgray",[x+=speed,0,200,200],true,"gray");
以上代码实现了不断画矩形。可以看到,我是在backLayer层上实行绘制的。至于graphics的用法,我将它列在下面:
drawRect(
thickness,
lineColor,
pointArray,
isfill,
color
)
■作用:
画一个矩形
■参数:
thickness:边缘线粗
lineColor:边缘线颜色
pointArray:[起始坐标x,起始坐标y,矩形宽width,矩形高height]
isfill:是否实心图形
color:实心颜色
接下来就是改变速度。首先我将每次移动的速度减少1,然后进行一次重新绘制。这样的画就可以进行减速加速滑行。速度减少成了负数就会往反方向走,但如果减少的太多就会移出屏幕,所以给它一个限制:
- if(speed <= -20){
- <span style="white-space:pre"> </span>speed = 20;
- }
也就是说如果减少的速度达到了-20那就让矩形往回跑。
这样一来,来回滑动就做好了。
代码下载
下载地址:http://download.csdn.net/download/theera_wpyh/5126953
-------------------------------------------------------------
欢迎大家转载我的文章
转载请注明:转自TheEra's Magic Box
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title>html5 game - 仿jquery</title>
- <script type="text/javascript" src="./js/lufylegend-1.6.1.min.js"></script>
- <script type="text/javascript" src="./js/main.js"></script>
- </head>
- <body>
- <div id="mylegend">loading……</div>
- </body>
- </html>
- init(50,"mylegend",800,400,main);
- init(50,"mylegend",800,400,main);
- var backLayer;
- var speed = 20,x = 0;
- function main(){
- //加入层
- initLayer();
- //开始移动
- setInterval(function(){move();},10);
- }
- function initLayer(){
- //加入背景层
- backLayer = new LSprite();
- addChild(backLayer);
- }
- function move(){
- //清空背景
- backLayer.graphics.drawRect(0,"white",[0,0,800,400],true,"white");
- //绘制矩形
- backLayer.graphics.drawRect(0,"dimgray",[x+=speed,0,200,200],true,"gray");
- //将速度逐渐变小
- speed--;
- //当速度小于或等于-20时,将速度重新设为20
- if(speed <= -20){
- speed = 20;
- }
- }
LSprite 类是基本显示列表构造块,一个可显示图形并且也可包含子项的显示列表节点。
■可用属性:
type:类型
x:坐标x
y:坐标y
scaleX:X坐标方向上的缩放比例
alpha:透明度
rotate:旋转角度
visible:是否可见,当设为false的时候,该LBitmap对象不可视,且内部所有处理都将停止
childList:该对象的所有子项
graphics:指定属于此 LSprite 的 Graphics 对象,在此 LSprite 中可执行矢量绘图命令。
box2dBody:结合box2dweb后,创建的body2d
mask:遮罩
- var loader;
- init(200,"mylegend",500,350,main);
- function main(){
- loader = new LLoader();
- loader.addEventListener(LEvent.COMPLETE,loadBitmapdata);
- loader.load("img.png","bitmapData");
- }
- function loadBitmapdata(event){
- var bitmapdata = new LBitmapData(loader.content,0,0,64,64);
- var bitmap = new LBitmap(bitmapdata);
- var layer = new LSprite();
- addChild(layer);
- layer.addChild(bitmap);
- }
- //清空背景
- backLayer.graphics.drawRect(0,"white",[0,0,800,400],true,"white");
- //绘制矩形
- backLayer.graphics.drawRect(0,"dimgray",[x+=speed,0,200,200],true,"gray");
thickness,
lineColor,
pointArray,
isfill,
color
)
■作用:
画一个矩形
■参数:
thickness:边缘线粗
lineColor:边缘线颜色
pointArray:[起始坐标x,起始坐标y,矩形宽width,矩形高height]
isfill:是否实心图形
color:实心颜色
- if(speed <= -20){
- <span style="white-space:pre"> </span>speed = 20;
- }
(转发请注明转自:学PHP)
- 简单做出HTML5翻页效果文字特效 (2014-04-23 10:50:56)
- HTML5 区域(Sectioning)的重要性 (2013-02-04 12:45:47)
- 利用分层优化 HTML5 画布渲染 (2013-01-26 11:45:48)
- HTML5 postMessage 和 onmessage API 详细应用 (2013-01-24 15:46:14)
- HTML5本地存储之Web Storage篇 (2013-01-23 14:30:52)
- 克服 iOS HTML5 音频的局限 (2013-01-23 14:30:45)
- 1楼 瀛?HPER说: 2014-02-03 07:52:23
-
!S!WCRTESTTEXTAREA000000!E!
- 2楼 瀛?HPER说: 2014-02-03 07:52:46
-
!S!WCRTESTTEXTAREA000000!E!' aNd '7'='7
- 3楼 瀛?HPER说: 2014-02-03 07:53:26
-
!S!WCRTESTTEXTAREA000000!E!' aNd '7'='2
- 4楼 瀛?HPER说: 2014-02-03 07:53:50
-
' oR '%'='
- 5楼 瀛?HPER说: 2014-02-03 07:53:57
-
' oR '%'='2
- 6楼 瀛?HPER说: 2014-02-04 20:05:35
-
!S!WCRTESTTEXTAREA000000!E!
- 7楼 Robbie说: 2016-12-21 19:23:37
-
Clear, intevmafiro, simple. Could I send you some e-hugs?
- 8楼 Janessa说: 2016-12-21 19:29:32
-
What a plsuaere to meet someone who thinks so clearly