笨木头  2012-05-07 13:42     LGame     阅读(5060)     评论(7)
转载请注明,原文地址: http://www.benmutou.com/archives/227
文章来源:笨木头与游戏开发

LGame学堂008简单控件之LButton

关键字:LGame 入门 控件 LButton

笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址:http://blog.csdn.net/musicvs/article/details/7530117

 

-

注:以下内容是昨晚写的,不是今天写的。

在是深圳时间晚上2243分,好吧,笨木头我是一个不合格的程序员,23点开始我就可以上床睡大觉~所以,我这么努力地写心得,大觉多多支持~(耶~苦肉计得逞~

~本章来看看咱们游戏里必不可少的控件——按钮。

这是LGame里最简单的控件之一了,直接上代码呗:

public class GameScreen extends Screen {  
@Override
public void onLoad() {
LButton btn = new LButton("assets/btn.png");
btn.setLocation(100, 100);
add(btn);
}

@Override
public void alter(LTimerContext arg0) {
  }
@Override
public void draw(LGraphics arg0) { }
@Override
public void onTouchDown(LTouch arg0) { }
@Override
public void onTouchMove(LTouch arg0) { }
@Override
public void onTouchUp(LTouch arg0) { }
}



 糕,有点过于简单,以至于我不知道怎么讲解了~嘻嘻

好吧,这样就创建了一个背景图片为"assets/btn.png"且坐标在
(100, 100)的按钮了~

然,最重要的是add(btn)这一步,如果大家有下载LGame源码的,就可以看到,这一步,实际上是调用了Screenadd()函数:

public void add(LComponent comp) {
   
       if (desktop != null) {
desktop.add(comp);
 }
 }
 



 

果大家对上一章的内容还有印象的话,那就应该很清楚了,add函数就是把按钮添加到desktop里了。

OK,来点有意思的——点击事件。
点击事件是一个按钮必须有的嘛,没了它,按钮就有没有什么存在的意义了
~
来,看看LButton是怎么添加点击事件的吧:


LButton btn = new LButton("assets/btn.png") {
  
@Override
public void doClick() {
  Log.d("LGameStudy", "糟糕,这样的设置方式是不是有点不习惯?");
}
  
       };

btn.setLocation(100, 100);
add(btn);




 

的,如果你是我的忠实读者的话,你应该还记得“钩子函数”(好吧,我开玩笑的,相信聪明的你早就知道钩子函数了~)。其实LButton的点击事件也是通过钩子函数的方法来实现的。LButton有个doClick()函数,只要我们重写这个函数,就可以实现点击事件了。OK,聪明的你,相信不需要我再解释了~

啰嗦一下:
实我个人还是比较喜欢Android自带Button的那种设置点击事件的方法的(用setOnClickListener()方法),总感觉LGame这种方式有点不习惯,嘿嘿,个人爱好而已~


~咱们再来看看一个让人兴奋的功能好不好?~
~

LImage[] imgs = new LImage[] {LImage.createImage("assets/btn.png"),
LImage.createImage("assets/btnOn.png"),
}; 
btn.setImages(imgs);


 



们来看看LButton的setImages(LImage[] imgaes)函数,这个函数有什么用呢?很神奇的,看看官方的解释:

插入一组图像(1-4张皆可,超出忽略不计),并将它们作为LButton的按钮显示用图,以分别对应按钮未点击、点击、屏幕划过以及其它状态。

小弟暂时只试过前面两种状态,各位感兴趣的可以自己研究一下哈~

好吧,我蛮困的了,关于LButton,我就讲到这里啦,大家可以自己研究一下其它功能,关于LButton,官方文档有API的解释。

-

-

源码下载:http://download.csdn.net/detail/musicvs/4289624

原文第一次发布于Android-Fans论坛:

http://www.android-fans.net/thread-1576-1-1.html


7 条评论
  • tianshenshangjie 2012-05-07 18:11:00

    Android自带Button的用setOnClickListener()方法。是一个简单的回调函数功能。
    0回复
  • musicvs 2012-05-07 19:22:00

    [reply]tianshenshangjie[/reply]
    我觉得这样方便一点,不需要在new的时候就立即重写doClick方法,呵呵~
    0回复
  • tianshenshangjie 2012-05-08 11:20:00

    [reply]musicvs[/reply]
    对。我也这么觉的。通过设置监听器会让代码更好的维护。样子也会好看很多。 这里还有一个影响就是doClick 里面如果本身有响应的问题存在。
    0回复
  • musicvs 2012-05-08 12:01:00

    [reply]tianshenshangjie[/reply]
    "doClick 里面如果本身有响应的问题存在"是指?
    你是说doClick函数本身也有一些默认操作?
    0回复
  • tianshenshangjie 2012-05-08 12:45:00

    [reply]musicvs[/reply]
    比如不同的组件每个都有自己本身的响应(这个响应在不同的界面都会被执行)。同时在不同的界面也有不同的响应。比如说按钮的响应 本身就做好了按下抬起的操作。同时他在不同的界面又有不同的响应比如登陆。比如跳转等等。这些不同的操作可以通过设置监听。那些抬起按下这些操作就可以放到onclick中执行。尽量少的让使用人的去不关注底层是如何实行。高内聚低耦合
    0回复
  • musicvs 2012-05-08 12:53:00

    [reply]tianshenshangjie[/reply]
    噢噢~大致明白~
    其实LButton已经有按下、抬起、屏幕操作等事件的函数,onClick就是专门给我们响应点击事件的~呵呵
    0回复
  • LyL_Studio 2012-07-25 10:43:00

    我点button 旁边的区域,button 却抬起了。但是没有调用doclick 方法。是怎么回事?
    0回复
发表评论
粤ICP备16043700号

本博客基于 BlazorAnt Design Blazor 开发