Libgde引擎:HelloWorld项目
前面的文章中介绍了整个Libgdx的框架以及框架中的各个模块。那些都是一个概述性的东西,不能没有,看完后对这个引擎有一个大概的了解后,接触到实际代码的时候就不会那么陌生。下面就开始今天的内容:
1.搭建Libgex引擎环境。
1).从网址:http://code.google.com/p/libgdx/downloads/list 里面下载这个包:libgdx-0.81.zip。解压到libgdx-0.81文件夹中。
2).参考解压后文件夹下面的README文件(用任何文本编辑器打开),新建一个helloWorld项目。
2.使用Libgdx框架在屏幕上画一个点。
在新建的helloWorld项目中新建一个包:com.helloworld.fneg,在包中新建一个类:MyFirstPoint.java,这个类实现了ApplicationListener接口(此接口在以前文章中有过介绍)。再添加类HelloWorld.java类,这个类中带有main方法。
此时MyFirstPoint.java类中有如下代码:
package com.helloworld.fneg;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.Mesh;
import com.badlogic.gdx.graphics.VertexAttribute;
import com.badlogic.gdx.graphics.VertexAttributes.Usage;
/**
*@Copyright:Copyright (c) 2008 - 2100
*@Company:Sagret
*@Author:fengcunhanfengcunhan@gmail.com
*@Package:com.helloworld.fneg
*@FileName:MyFirstPoint.java
*@Time:2011-1-10
*@User:feng
*/
public class MyFirstPoint implements ApplicationListener {
@Override
public void create() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
}
在类中添加一个成员变量:private Mesh pointMesh;
在create()方法中初始化该变量:
VertexAttribute vertex= newVertexAttribute(Usage.Position, 3, "point_position");
pointMesh=new Mesh(true, 4, 4, vertex);
pointMesh.setVertices(newfloat[]{
0.5f,0.5f,0
});//设置顶点数组
pointMesh.setIndices(newshort[]{0});//设置索引
以下对这一些方法做一下说明:
VertexAttribute vertex= newVertexAttribute(Usage.Position, 3, "point_position");
VertexAttribute类从字面理解上来看就是顶点属性类,它做的也是封装顶点信息的功能。
官方文档如下:
com.badlogic.gdx.graphics.VertexAttribute.VertexAttribute(int usage, int numComponents, Stringalias)
Constructs a new VertexAttribute.
Parameters:
usage the usage, used for the fixed function pipeline. Generic attributes are not supported in the fixed function pipeline.
numComponents the number of components of this attribute, must be between 1 and 4.
alias the alias used in a shader for this attribute. Can be changed after construction.
大致的说一下这几个参数的意思:
Usage.Position:指定是一个点的数据。
3:这个点是有3个数据组成
point_position:这个顶点属性的别名。(可以随便写一个)。
pointMesh=new Mesh(true, 4, 4, vertex);
我把这个方法的文档贴上来:
com.badlogic.gdx.graphics.Mesh.Mesh(boolean isStatic, int maxVertices, int maxIndices, VertexAttribute... attributes)
Creates a new Mesh with the given attributes.
Parameters:
isStatic whether this mesh is static or not. Allows for internal optimizations.
maxVertices the maximum number of vertices this mesh can hold
maxIndices the maximum number of indices this mesh can hold
attributes the VertexAttributes. Each vertex attribute defines one property of a vertex such as position, normal or texture coordinate
大致的说一下这几个参数的意思:
True:表示这个图元是静态的
4:表示这个图元一个顶点最多可以有4个数字组成。
4:表示这个图元最多可以有4个索引
vertex:顶点属性对象(上面才提到)。
在render()方法中添加如下代码:
pointMesh.render(GL10.GL_POINTS, 0, 1);
我把这个方法的文档贴上来:
void com.badlogic.gdx.graphics.Mesh.render(int primitiveType, int offset, int count)
Renders the mesh using the given primitive type. offset specifies the offset into vertex buffer and is ignored for the index buffer. Count specifies the number of vertices or indices to use thus count / #vertices per primitive primitives are rendered.
This method is intended for use with OpenGL ES 1.x and will throw an IllegalStateException when OpenGL ES 2.0 is used.
Parameters:
primitiveType the primitive type
offset the offset into the vertex buffer, ignored for indexed rendering
count number of vertices or indices to use
GL10.GL_POINTS:指定画一个点(OpenGL中的东西)
0:数组开始位置是0表示使用顶点数组的全部数据。
1:表示使用1个顶点。
在HelloWorld.java的main方法中添加一下代码:
new JoglApplication(new MyFirstPoint(), "Hello world", 480, 320, false);
右击HelloWorld.java就可以运行了。
3.在Android中运行以上的程序。
新建一个Android项目,按照README中的方法配置好环境。将上述Java项目添加到这个项目里面,然后将自动生成的那个Activity改成继承自AndroidApplication,然后删除setContentView(R.layout.main).添加一行代码:initialize(new MyFirstPoint(), false);然后运行这个Android就行了,是不是很简单啊?哈哈
以上项目的工程源码请从这里下载:http://u.115.com/file/f659b13f2#libgdxHelloWorld.rar
版权所有,转载请注明出处:
对于公司来说,打卡机就是用来严格约束员工考勤制度的“紧箍咒”。然而上有政策下有对策,如今网上热销的一款指纹膜却成为一些上班族的秘密武器。
“以后除非老板天天守着那考勤机,不然休想扣咱辛辛苦苦挣的那么点工资。”——这是很多使用指纹膜的上班族的共同心声。尽管屡试不爽成功骗过考勤,可一旦被识破,不但丢了面子、扣了工资,严重者还将落个被炒鱿鱼的下场。一款小小的指纹膜,折射出喜、怒、哀、愁的职场众生相。
喜 金蝉脱壳防迟到
天气越发寒冷,让家住沈阳铁西区保工街的小刘更爱赖床。小刘在某大厦上班,自从单位去年更换了指纹打卡机后,规定每天8:30前员工必须到单位打卡。小刘家离地铁站有段距离,尽管每天7点就从家里出来,可有时候遇到路上塞车、公交车晚点,难免迟到。迟到一次就会罚款30元钱,每月如无迟到记录,就会拿到全勤奖200元。换句话说,这迟到一次的代价是230元。
因为两次月末迟到,让小刘损失了近500元。在一次浏览网站时,小刘发现了一种名为指纹膜的东西。店家介绍,指纹膜使用高科技纳米材料采集指纹,再将硅胶倒入制成模板里面成型。制作出自己的指纹膜后,就可以以假乱真,骗过打卡机的“光眼”。小刘觉得,这款号称打卡机克星的产品,就是为像自己这样的上班族发明的。按照店主的指导,小刘提取了个人的指纹,寄给商家,没过几天,就收到商家寄来的指纹膜,按到打卡机上一试,果然有效。小刘把花了100元购买的指纹膜放在了离公司较近的王姐那里,让王姐每天打卡的同时顺便帮她代为打卡,自己则可以多睡会懒觉。打那之后,小刘每个月都能拿到全勤奖,她觉得自己这钱花的很值,就算日后跳槽,也可以接着用。
怒 开除打卡作弊者
沈阳市三好街一家电子产品公司技术部负责人介绍,公司在员工手册里已将利用指纹膜打卡列在其中。该公司会定期抽查员工的到岗情况,如果员工打了卡,而没有到岗,将会追查原因:看是不是使用了指纹膜,如果有人协助他用指纹膜打卡作弊,将一并受到处罚。
目前,比较先进的指纹识别系统可通过判别该指纹是否“属于生命体”而非模仿物来判断真伪,其他一些也有指纹加数码拍照的系统,而这些设备一般只是应用在一些特殊部门,如果仅仅应用在考勤方面成本过高。因此,公司只能加强人为检查考勤来应对。考勤制度同样也是员工诚信的镜子,如果真的作弊,恐怕不是罚钱那么简单,严重的会被开除。
哀 露马脚被扣奖金
大连人张先生在高新园区一家软件公司上班。公司的管理制度很严格,每天早八晚五的打卡,迟到半个小时之内就要罚10元钱。不久前,张先生找到几名要好的同事各团购了一套指纹膜。使用一次后,效果不错。可有一天领导查人,打卡记录显示在岗,人却不在,结果露了马脚。在一次召集大家开会时,领导很生气并点名批评了张先生。最后,张先生交了一份深刻的检讨,并被扣除满勤奖才算了事。
沈阳某广告公司孙经理告诉记者,由于有些业务员为了迟到或早退虚开假条,他们公司于去年年初购买了考勤打卡机。对于指纹膜,孙经理表示听说过有的公司为了防止指纹膜捣乱,高价购买升级版的脸部识别机。他觉得,现在多数公司的指纹打卡机功能基本类似,存在钻空子的可能。公司依靠员工互相监督机制,特意设立了举报奖金。一经查实,会将作弊员工的奖金以分钟扣掉,每迟到1分钟,扣1元钱。而扣的钱全部充公。
可对于使用过指纹膜的上班族,有着属于自己的无奈。小陈说:“经常要加班,有的时候甚至要到半夜以后。但是公司却有严格的考勤制度,如果上班不打卡,我的收入就会有损失。碰到交通堵车,又不能为了不迟到而闯红灯不顾安危。这是个员工和企业需要找办法解决的问题。”
愁 欺骗公司又泄露隐私
辽宁腾达律师事务所律师李雨泉告诉记者,“上班族买指纹膜让人代替考勤,这是一种欺骗行为。如果用指纹膜打卡的行为发生多次,最后被单位查出‘算总账’,很可能达到旷工、迟到的上限而被辞退,也可能因对单位欺诈而被辞退。”
李雨泉说,目前还没有禁止生产和出售指纹膜的相关法律条文,不过这种行为是弄虚作假的表现,不仅侵犯了单位利益,还会对个人的信誉带来危害。指纹属于个人隐私,万一被不法分子利用,小则被套取个人信息资料,大则可能遭受经济损失。一旦指纹膜被不法分子拾到后复制利用,进而从事非法活动的话,还会增加警方破案的难度
IC卡 (Integrated Circuit Card,集成电路卡)