HTML5 Canvas游戏开发(四)lufylegend开源库件(下)

  一、文本

  LTextField对象是lufylegend库件中专门用于显示文本信息的一个对象。

  1、文本属性

  创建的文本框对象不会自动加入可视化对象列表中。只有手动调用addChild()方法才能使它显示。

var layer = new LSprite();   //初始化LSprite对象
addChild(layer);    //将对象添加进canvas画布中
var field = new LTextField();   //创建文本框对象
field.text = "Hello World!";   //设置文本属性,添加文本内容
layer.addChild(field);   //将文本框对象添加进LSprite对象中

  文本框对象还有很多其他的属性:坐标、文字大小、字体风格、字体颜色。

field.x = 50;
field.y = 50;
field.text = "Hello World!";
field.size = 25;
field.color = "#333333";
field.weight = "bolder";

  2、输入框

  使用LTextField对象的setType函数,可将texttype属性设为LTextFieldType.INPUT,将其变成一个输入框。

field.setType(LTextFieldType.INPUT);

  二、事件

  1、鼠标事件

  鼠标事件分为鼠标按下(LMouseEvent.MOUSE_DOWN)、鼠标弹起(LMouseEvent.MOUSE_UP)和鼠标移动(LMouseEvent.MOUSE_MOVE)3个事件。

init(50,"mylegend",300,300,main);
var field;
function main(){
   var layer = new LSprite();
   layer.graphics.drawRect(1,‘#cccccc‘,[0,0,300,300],true,‘#cccccc‘);
   addChild(layer);
   field = new LTextField();
   field.text = "Wait Click!";
   layer.addChild(field);
   layer.addEventListener(LMouseEvent.MOUSE_DOWN,downshow);  //事件监听
   layer.addEventListener(LMouseEvent.MOUSE_UP,upshow);
}
function downshow(event){
    field.text = "Mouse Down!";
}
function upshow(event){
    field.text = "Mouse Up!";
}

  在手机上发生的是TOUCH_START、TOUCH_END、TOUCH_MOVE事件,但是在库件中不需要进行区分,因为库件会根据运行环境自动进行转换。

  2、循环事件

  如果想重复执行某段代码,就需要循环事件的监听,循环事件指的是按照指定间隔事件不断重复地广播某事件。

var layer = new LSprite();
layer.graphics.drawRect(1,‘#cccccc‘,[0,0,300,300],true,‘#cccccc‘);
addChild(layer);
field = new LTextField();
layer.addChild(field);
layer.addEventListener(LEvent.ENTER_FRAME,onframe);  //使用循环事件重复调用onframe函数。

  3、键盘事件

  在库件中用LKeyboardEvent.KEY_DOWN、LKeyboardEvent.KEY_UP、LKeyboardEvent.KEY_PRESS来侦听键盘事件。

init(50,"mylegend",300,300,main);
var field;
function main(){
    var layer = new LSprite();
    layer.graphics.drawRect(1,‘#cccccc‘,[0,0,300,300],true,‘#cccccc‘);
    addChild(layer);
    field = new LTextField();
    field.text = "Wait Click!";
    layer.addChild(field);
    LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_DOWN,downshow);
    LEvent.addEventListener(LGlobal.window,LKeyboardEvent.KEY_UP,upshow);
}
function downshow(event){
    field.text = event.keyCode + " Down!";
}
function upshow(event){
    field.text = event.keyCode + " Up!";
}

  需要特别注意的是,由于键盘事件需要加载到window上,所以加载的时候方法有变化。

  注意看监听函数,在这里使用的是LEvent.addEventListener来加载键盘事件,其中LGlobal.window就是window对象。所以键盘事件是加载到window对象上,这样就能监听整个浏览器窗口。

  二、按钮

  库件中内置了LButton类来添加按钮。

  原型:LButton(Displayobject_up,Displayobject_over)

  参数:Displayobject_up:代表按钮默认是UP的状态,即没被按下。

  Displayobject_over:鼠标移动到按钮上时按钮的状态,离开时又恢复成UP状态。

var testButton = new LButton(bitmapup,bitmapover);
testButton.y = 50;
layer.addChild(testButton);
testButton.addEventListener(LMouseEvent.MOUSE_DOWN,downshow);

  三、动画

  在库件中使用LAnimation类和循环事件,可以实现一组动画的播放。

  LAnimation原型:LAnimation(layer,data,list);

  layer:LSprite对象。

  data:LBitmapData对象。

  list:一个存储坐标的二维数组。

  LGlobal.divideCoordinate(width,height,row,col):准备一个二维的坐标数组。

  该函数会将传入图片的宽和高按照行数和列数进行拆分计算,从而得到一个二维数组。

  如果要实现图片的循环播放,则需要用LAnimation类的setAction函数。

  函数原型:setAction(rowIndex,colIndex)

  参数:rowIndex:数组行号。

  colIndex:数组列号。

时间: 2024-10-20 13:05:23

HTML5 Canvas游戏开发(四)lufylegend开源库件(下)的相关文章

用仿ActionScript的语法来编写html5——终篇,LegendForHtml5Programming1.0开源库件

一,LegendForHtml5Programming1.0库件是什么?它是一个javascript库,它模仿了ActionScript的语法,用于html5的开发,目前实现的功能相对较少,还不能称之为引擎,希望将来可以作为html5的开源引擎,为html5开发者提供服务. 二,LegendForHtml5Programming1.0库件的构建过程请参照下面的九篇文章,最终代码和构建过程会有些出入,以源码为准.用仿ActionScript的语法来编写html5系列文章第一篇,显示一张图片http

HTML5 Canvas游戏开发(一)基础知识

一.绘制基本图形 在每次用canvas画布时,都有几步是“套路” 1.在HTML中创建Canvas画布: <canvas id="mycanvas" width="960px" height="580px"> 浏览器不支持canvas <!-- 如果不支持会显示这段文字 --> </canvas> 2.获取画布标签,并得到一个2D对象: var c = document.getElementById('myca

HTML5 Canvas游戏开发(二)高级功能

一.变形 1.放大和缩小 scale(X,Y)函数. 当使用该函数时,其起始坐标值也被放大或缩小.当X.Y为负值时,可以实现翻转. 2.平移变换 translate(X,Y)函数. 表示水平方向向左移动,竖直方向向下移动. 3.旋转变换 rotate(角度)函数. 旋转一定角度,是以canvas的起始坐标坐标(0,0)为中心旋转.可使用translate修改canvas的中心. 4.setTransfrom函数实现倾斜效果 可使用transfrom()函数代替上述三种函数的功能. 二.图形的渲染

【Html5游戏开发 with LufyLegend.js 之一】一览全局函数 &amp; LGlobal静态类

一,前言 最近开始学习lufylegend.js,它是一款基于MIT协议的开源HTML5游戏引擎,目前使用Canvas渲染,2.0后会增添WebGL渲染.与其他的引擎相比,最大的特点就是模仿了ActionScript 3.0的语法,当然这只是一个特点,不会ActionScript对于学习lufylegend.js也没有什么坏的影响,我就是一个很好的例子(*_^),只不过如果你接触过ActionScript,那使用lufylegend.js的时候可能会顺手一些.以下是关于lufylegend.js

HTML5物理游戏开发 - 越野山地自行车(三)粉碎自行车

自上一章发布到现在已时隔四月,实在对不住大家,让大家久等了~话说不是我不关注我的博客,而是事情一多起来写博客的时间就少了.待到今日有空了,回头看了看自己以前写的文章,猛得发现已经四个月不曾写文章了,便只得叫声:"苦也~",我害怕本系列文章会拖得更久,于是立刻提笔,也好为本系列文章留个凤尾. 首先,大家来温习一下前面两篇里的内容吧: HTML5物理游戏开发 - 越野山地自行车(二)创建一辆可操控的自行车 http://blog.csdn.net/yorhomwang/article/de

Html5 Egret游戏开发 成语大挑战(一)开篇

最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力,在开发中最浪费时间就是设计和调试的阶段,js的语言过于自由,自由到有时候写错了都不知道,但typescript可以使用开发IDE帮助排错和调试,不得不说确实很有效率,在这之前,我在egret论坛里发了几个小游戏做练手,最近的一个<疯狂猜歌名>在素材齐备的情况下,仅用了不到1天的时间完成了开发,以

Html5 移动游戏开发

有很多游戏采用H5技术开发,比如三国来了.巴哈姆特之怒.切绳子等.我们公司也有多款游戏用H5开发,H5开发成本低,效率高,方便做自动更新,可移植性好.受益于H5技术,我们公司的很多产品都很方便跨平台. 早在2012年,我就很荣幸负责技术攻关,把我们的游戏移植到win8和wp8平台,当时在国内的win8和wp8平台是领先的.我们的一款游戏,跨ios.android.win8.wp8和黑莓10五大移动平台,这在国内肯定是唯一的吧? <Infinity Lands>喜获黑莓优秀大奖 也得益于在win

【读书笔记-《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)

3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.html Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多. <?xml version="1

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被