一、文本

  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:数组列号。

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

  1. html5游戏开发框架之lufylegend开源库件学习记录

    下载地址http://lufylegend.com/lufylegend 引用 <script type="text/javascript" src="../luf ...

  2. HTML5 Canvas游戏开发实战 PDF扫描版

    HTML5 Canvas游戏开发实战主要讲解使用HTML5 Canvas来开发和设计各类常见游戏的思路和技巧,在介绍HTML5 Canvas相关特性的同时,还通过游戏开发实例深入剖析了其内在原理,让读 ...

  3. HTML5 Canvas游戏开发(三)lufylegend开源库件(上)

    lufylegend可以解决HTML5开发游戏中会遇到的一些问题: 1.各种浏览器对于JavaScript和HTML的解析是不一致的. 2.手机浏览器和PC浏览器的区别. 3.JavaScript并非 ...

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

    一,LegendForHtml5Programming1.0库件是什么?它是一个javascript库,它模仿了ActionScript的语法,用于html5的开发,目前实现的功能相对较少,还不能称之 ...

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

    一.变形 1.放大和缩小 scale(X,Y)函数. 当使用该函数时,其起始坐标值也被放大或缩小.当X.Y为负值时,可以实现翻转. 2.平移变换 translate(X,Y)函数. 表示水平方向向左移 ...

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

    一.绘制基本图形 在每次用canvas画布时,都有几步是“套路” 1.在HTML中创建Canvas画布: <canvas id="mycanvas" width=" ...

  7. 使用Selenium和openCV对HTML5 canvas游戏进行自动化功能测试(一)

    上一篇讲了HTML5 canvas游戏的基本工作原理,接下来讲如何进行自动化功能测试. Selenium是一个跨平台的跨浏览器的对网页进行自动化测试的工具.从Selenium 2.0开始Seleniu ...

  8. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

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

    自上一章公布到如今已时隔四月,实在对不住大家.让大家久等了~话说不是我不关注我的博客,而是事情一多起来写博客的时间就少了. 待到今日有空了,回头看了看自己曾经写的文章,猛得发现已经四个月不曾写文章了. ...

随机推荐

  1. 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题

    小总结: 如果启用组件扫描,bean名称不同时,Spring将尝试创建一个bean,即使该类的bean已经在spring-config.xml中定义了. 但是,如果在spring配置文件中定义的bea ...

  2. 使用object_box遇到的崩溃 java.lang.UnsatisfiedLinkError:

    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/ ...

  3. Django 2.0.1 官方文档翻译: 快速安装向导 (Page5)

    快速安装向导 (Page 5) 在你使用 Django 前,你需要先安装它.我们有一个完整的安装向导,它包含所有涉及的内容,这个向导会指导你进行一个简单的.最小化的安装,当你通过浏览介绍内容的时候,这 ...

  4. python学习笔记3-函数的递归

    递归就是指自己函数的自我调用 #递归 #自己调用自己,函数的循环 def test1(): num = int(input('please enter a number:')) if num%2==0 ...

  5. Linux块设备和字符设备

    块设备:系统能够随机无序访问固定大小的数据片的设备,这些数据片称为块.块设备是以固定大小长度来传送资料的,它使用缓冲区暂存数据,时机成熟后从缓存中一次性写入到设备或者从设备中一次性放到缓存区.常见的块 ...

  6. HDU 1160 FatMouse's Speed (最长上升子序列)

    题目链接 题意:n个老鼠有各自的重量和速度,要求输出最长的重量依次严格递增,速度依次严格递减的序列,n最多1000,重量速度1-10000. 题解:按照重量递增排序,找出最长的速度下降子序列,记录序列 ...

  7. vue项目的配置

    1.第一首先我们先安装:visual studio code开发环境,可以换成中文版的. 2.安装note.js   下载链接:https://nodejs.org/en/ 3.安装npm使用淘宝镜像 ...

  8. 利用phpMyAdmin提权

    利用phpMyAdmin提权 发表于 2016-03-31   |   分类于 phpMyAdmin  |   暂无评论  |   9次阅读 爆路径 /phpmyadmin/libraries/lec ...

  9. 2016.08.02 math(leetcode) 小结

    math(leetcode) 小结 在leetcode中有些知识点(套路) 判断一个数是不是能被某些数整除,可以用 n%x == 0,循环除的话,就将while(n%x == 0)的循环条件设置判断整 ...

  10. linux下使用indent整理代码(代码格式化)【转】

    转自:https://blog.csdn.net/jiangjingui2011/article/details/7197069 常用的设置: indent -npro -kr -i8 -ts8 -s ...