﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java移动应用-随笔分类-开发工具</title><link>http://www.blogjava.net/bwlee/category/7608.html</link><description>关注基于JAVA EE，J2ME的移动服务</description><language>zh-cn</language><lastBuildDate>Sat, 17 Apr 2010 21:22:12 GMT</lastBuildDate><pubDate>Sat, 17 Apr 2010 21:22:12 GMT</pubDate><ttl>60</ttl><item><title>ibator,  ibatis的辅助工具，当然，不喜欢ibator产生的sql map文件的话就算了</title><link>http://www.blogjava.net/bwlee/archive/2010/04/17/318607.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Sat, 17 Apr 2010 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2010/04/17/318607.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/318607.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2010/04/17/318607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/318607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/318607.html</trackback:ping><description><![CDATA[能自动根据数据库和配置文件ibatorConfig.xml 来自动生成Java类，sqlmap 文件的ibatis开发工具，方便在数据库设计变动后进行自动的更新，当然，它只能提供基本的CRUD操作，对表间的连接和映射工作还是得手工完成的。<br />
<br />
<br />
对它自动生成的代码样式感觉不太好，但基本功能有了 ，尤其是在条件查询方面的语句组合感觉有点意思，相比自己费力地组合SQL语句来讲，利用它的 criteria 类来进行查询条件的组合感觉还是不错的。<br />
<br />
<br />
有兴趣可以去看看官方文档，<a title="官方网页" href="http://ibatis.apache.org/ibator.html">http://ibatis.apache.org/ibator.htm</a>l <br />
<br />
<br />
使用eclipse 插件截图如下;<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/bwlee/ibatorUsage.JPG" alt="" border="0" /><br />
<br /><img src ="http://www.blogjava.net/bwlee/aggbug/318607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2010-04-17 15:59 <a href="http://www.blogjava.net/bwlee/archive/2010/04/17/318607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好用的Eclipse国际化编辑插件</title><link>http://www.blogjava.net/bwlee/archive/2010/04/17/318605.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Sat, 17 Apr 2010 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2010/04/17/318605.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/318605.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2010/04/17/318605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/318605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/318605.html</trackback:ping><description><![CDATA[<br />
最近在工作中用到国际化，因为使用的Eclipse作为开发工具，在反复寻找比较后，觉得这个资源文件编辑工具ResourceBundleEditor很不错，当前版本是0.7, 下载地址在<a title="Resource Bundle" href="http://sourceforge.net/project/showfiles.php?group_id=125041">sourceforge.net,</a> <br />
<br />
<font size="2">Resource Bundle Editor是一个用于编辑本地化的属性文件(localized properties
files)。它让你通一个屏幕就能够同时管理所有相关联属性文件中的key/value信息。它所具有的功能包括：自动为Keys分类，能够提示丢失掉的，重复的，相似的values等．<br />
如果你的E文很好,那可以看看官方的介绍,及安装方法</font><br />
<br />
以上是摘自网上的介绍，个人感觉是目前网上能找到的最好的eclipse下的国际化资源编辑插件，记录备用，并与网友共享。<br />
<br />
以下是一幅工作截图，看看是不是很不错，能大大提高工作效率。<br />
<br />
<img src="http://www.blogjava.net/images/blogjava_net/bwlee/workspace.PNG" alt="" border="0" /><br /><img src ="http://www.blogjava.net/bwlee/aggbug/318605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2010-04-17 15:42 <a href="http://www.blogjava.net/bwlee/archive/2010/04/17/318605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Git Vs Mercurial hg? 异地协同开发，分布式SCM方案选择！</title><link>http://www.blogjava.net/bwlee/archive/2009/04/28/267998.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Tue, 28 Apr 2009 14:51:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2009/04/28/267998.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/267998.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2009/04/28/267998.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/267998.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/267998.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 分布式版本管理工具的选择，Git or Mercurial hg?<br><br>---- 增加了使用邮件来共享变更集的简要介绍。 有时间我会逐步补充相应内容，希望跟大家一起交流提高。&nbsp;&nbsp;<a href='http://www.blogjava.net/bwlee/archive/2009/04/28/267998.html'>阅读全文</a><img src ="http://www.blogjava.net/bwlee/aggbug/267998.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2009-04-28 22:51 <a href="http://www.blogjava.net/bwlee/archive/2009/04/28/267998.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse Ganymede 发布了！</title><link>http://www.blogjava.net/bwlee/archive/2008/07/05/212717.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Sat, 05 Jul 2008 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2008/07/05/212717.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/212717.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2008/07/05/212717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/212717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/212717.html</trackback:ping><description><![CDATA[ <a href="http://www.eclipse.org/ganymede/"><img title="Ganymede is here!" height="147" alt="Ganymede released!" src="http://www.eclipse.org/ganymede/images/ganymedeFriend.jpg" width="147" border="0" /></a> 可以下载最新的Eclipse Ganymede了，相比Europe而言，Ganymede减少了crush和内存使用，但是我最期望的JSF支持依然表现一般，也许是要给插件开发商留点空间吧，感觉是做了一些工作，但都不怎么到位。另外，就是在几个针对性比较强的开发环境的发布版本中，plugins的管理现在还是倾向于把所有的都混在一起，跟我的期望也是有些差距，我还是比较倾向于把不同的类别的插件，共用插件等分别分开，便于更新和管理。当然，分开管理也有不好的地方，尤其是在一些版本需要使用的共用插件的版本不同时，容易出现冲突。但放在一起也是一样的，这个是开发进度的不同步造成的，本身就比较难管理，不过如果不是像我这样同时使用多种开发功能的话，一般也不会遇到这样的问题。 <img src ="http://www.blogjava.net/bwlee/aggbug/212717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2008-07-05 10:45 <a href="http://www.blogjava.net/bwlee/archive/2008/07/05/212717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RIA 之JSF开发环境比较</title><link>http://www.blogjava.net/bwlee/archive/2007/02/22/100360.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Thu, 22 Feb 2007 10:51:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2007/02/22/100360.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/100360.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2007/02/22/100360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/100360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/100360.html</trackback:ping><description><![CDATA[JSF和AJAX的RIA开发<br /><br />(刚才不知出了什么毛病,不能发布,把内容搞丢了,下次再补)<br /><br />现在客户对WEB界面的要求是越来越高，偏偏我又是个懒惰的人，不想太麻烦，在充分的比较和尝试后，准备应用JSF来增加点东西。<br /><br />现有的免费开发工具的确不是很多，初步试了下，Eclipse +WTP还有Exadel4.0.3和SunJava Studio Creator.<br /><br />1. Eclipse 总体感觉了一下，Eclipse 通用当然是最好的，不需要重新安装环境，但目前版本还不行，正在开发中的WTP2.0M5也试用了一下，错误相当多，ＪＳＦ的配置尤其是应用MyFaces的时候很麻烦，可能是缺省的一些东西有误，与Tomcat6上的Deploy等都存在相当多的问题，只能等等看，现在在Eclipse3.2.1+WTP1.5.3下面直接手工配置web.xml和faces-config.xml到是可用的，使用的是Ｍyfaces+tomahawk+ajax4jsf，简单测试中感觉还行，因为用到的UIComponents不多，也不好就此夸它很好使:)<br /><br />2.Exadel  这个在用struts的时候用过的工具,基于Eclipse的,以前是因为要收费,加上后来也不喜欢struts那种太繁杂的一堆东西,也就没有用了,现在看到有个free的版本,一时也找不到好的解决方案,就拿来试了一下,总体感觉还是不错的,支持可视化的编辑和在配置和代码直接能够自动地切换和进入方面给人印象深刻,有种不受阻碍非常顺畅的感觉,但遗憾的是不知道是不是我的Eclipse中的某些插件有版本兼容问题,经常容易出现内存错误,要关掉workbench,搞得很不爽,慢慢也就不用了,老实讲,配置好了后很多东西基本上也不会再动,而且可视化编辑只是对标签不熟时有较大的帮助,熟悉了的人可能觉得代码自动完成更有用,至少我的感觉是这样.<br /><br />3. Sun 的Java Studio Creator 使用时感觉像是在变魔术,做做Demo之类的很快,但不太习惯,可能是不喜欢这种太多的向导来控制工作步骤,缺少掌控的感觉,也没花时间在上面尝试用MyFaces,不多做评论,按理说SUN的东西技术上应该还是不错的,只是用Eclipse习惯了,不想在工具上多花时间.<br /><br />JSF应用技术的开放性和可配置是它的极大优点,但在目前缺乏好的工具之前,这也许是一个致命的弱点,毕竟大家都需要有个好的车床尽快车好螺丝,对调试车床的兴趣不大,或者说没有太多的时间和精力.<br /><br />但从长远来看,尤其是大量的工具在涌现,包括MAVEN在内的集成持续的自动化开发管理工具也在提供对JSF的支持,JSF的发展肯定比ASP.net要好,毕竟在灵活性的背后就是商业利润点,可伸缩的配置带来部署费用上的节约和跨平台应用毕竟能够带来很多直接的商业好处.<br /><br />UICOMPONENTS的支持也到了让人眼花缭乱的地步,众多的UI组件开源而出,对AJAX的支持也有很多,Exadel最近也把它的Ajax4jsf开源项目给了JBOSS,借助RedHat的服务平台势必能更快更好地推出,从而得到快速发展.<br /><img src ="http://www.blogjava.net/bwlee/aggbug/100360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2007-02-22 18:51 <a href="http://www.blogjava.net/bwlee/archive/2007/02/22/100360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss IDE 1.6.0GA有界面部分有些问题，配置不方便</title><link>http://www.blogjava.net/bwlee/archive/2006/07/29/60765.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Sat, 29 Jul 2006 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2006/07/29/60765.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/60765.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2006/07/29/60765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/60765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/60765.html</trackback:ping><description><![CDATA[为了一个Web项目的开发，试了下Eclipse + JBoss + MySQL 模式，开始还算顺利，安装好各个部分后，开始了一个测试工程，却发现配置时有些问题，JBoss IDE 1.6GA与Eclipse3.2的配合有些问题，XDoclet的UI还有JBoss的Launcher和Deployer的配置界面有错误，无法正确配置，去JBoss的网上看了下，发现有2.0的Alpha版出来了，但我没兴趣去试了，还是等正式的出来了再说吧，只是手工把Plugins下的几个ui部分简单删除了，WTP的plugins配置界面也能够完成全部功能。<br /><br />在自己碰到的路障上贴个标识，后来者可以不必再在些浪费时间了：）<br /><img src ="http://www.blogjava.net/bwlee/aggbug/60765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2006-07-29 16:40 <a href="http://www.blogjava.net/bwlee/archive/2006/07/29/60765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME小游戏介绍</title><link>http://www.blogjava.net/bwlee/archive/2006/05/25/48193.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Thu, 25 May 2006 13:32:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2006/05/25/48193.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/48193.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2006/05/25/48193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/48193.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/48193.html</trackback:ping><description><![CDATA[
		<div align="center">J2ME Game APIs的使用介绍<br />－－效率问题比较严重，拿出来请高手指正<br /><br /><div align="left">一个J2ME的2D游戏技术DEMO                    <a target="_self" href="/Files/bwlee/GetBall.zip"> 源码</a><br /><br />计划了很久了，准备作为J2ME的Game APIs的例子贴出来，无奈一直不得空，直到最近才简单地整理了一下，把它共享出来。<br /><br />严格地讲，这个不能算作一个完整的游戏，没有自己的创意，只是简单地模仿了一个Flash的小游戏，当时是为了自己练习用的，Game Play也很简单，但包含了J2ME的Game包中所有的东西，作为一个Demo来讲，内容还是很充实的。<br /><br />在介绍之前，先简单地提一下Gaming API中的几个类，包括Sprite，TiledLayer,LayerManager,Media.Player等。<br />Sprite：偶尔看到过有些人把它翻译成精灵，我偷懒一下，就不翻译了，这个类用来表达游戏中的一个活动的角色，包括玩家控制的Player角色和非玩家控制的角色（NPC）。<br />TiledLayer：这个是用来表达背景的类，其实从绘图的角度来看，Sprite和TiledLayer没有本质差别，只是将要画在屏幕上的一幅图像而已，因此在Game包中它们都是Layer类的子类。并且都能够从一幅图像方便地构造。<br />LayerManager：这个是用来管理所有图像对象的类，通过把Sprite和TiledLayer加入其中，J2ME设备就知道如何来绘制它们了。<br />GameCanvas：最后要提到的是画布，这是所有可视对象最终要表演的舞台。其实跟以前的Canvas没有本质的不同，同样是提供了一个Graphics接口来供把一些内容画上去而已，但增加了对玩家输入的处理，能够通过按键状态来直接读入玩家按键操作，相对更加简便了。<br />还利用到了Media包中的Player和ToneControl来播放音乐，没有音乐和声音的游戏是不可能出现的，呵呵。<br /><br />先简单地介绍一下这个游戏，玩家只能控制角色（一个端着网兜的小人）水平地移动，接住自然下落的小球就得分，积分到一定程度后，小球下落速度将加快，直到最高速为止；如果没接到小球，也有相应的惩罚，最终游戏会Game Over。<br /><br />为了避免过于单调，玩家角色不是简单地平移，而是利用了Sprite的简单帧动画来让角色看上去有些动作。其实很方便的，只是在移动位置时更换一下图像就行了，Sprite提供有几个方法NextFrame()，PrevFrame()用来切换。<br />声音部分就更简单了，只是重复地播放一段预先写进去的音乐，来自Sun的WTK中的一个例子。<br />不过既然提到了它，就还是先简单地说一下吧，免得后面介绍其他部分时有些疑问。<br /><br />J2ME中的声音部分非常简单，当然效果也不太好，所需的基本元素只有如下几个，一个内容部分的Byte系列；一个是播放器Player；还有一个是控制部分的ToneControl。代码示例如下：<br /><br />              tonePlayer = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);<br />              tonePlayer.setLoopCount(-1);<br />              tonePlayer.realize();<br />              ToneControl tc = (ToneControl)tonePlayer.getControl("javax.microedition.media.control.ToneControl");<br />              tc.setSequence(mySequence);<br /><br />当然还需要些初始化工作和异常处理，然后就可以通过tonePlayer.start()/close()方法来控制声音的播放和停止了。<br /><br />具体请参见源码中CanvasGetBall.java中的createTonePlayer()方法。<br /><br />锣鼓响了半天，主角也该出场了。这个游戏里的主角只有一个接球小人，不过角色还有一个跟它演对手戏的NPC，就是那只从天而降的小球了。这两个类都是Sprite的子类，小球因为有些自己的动作，同时实现了Runnable接口，能自主活动。不过也很简单，NPC嘛，一般来说都是相对弱智些，不然也没法玩了，谁的反应速度跟得上机器啊，再说了，NPC知道的信息也要多些:)。<br /><br />先来看看主角吧，BallPlayer类就是我们的主角，其实非常简单，在所有的6个类中，除了记分用的Score外就数它最小了。提供一幅图像把它实例化后，就只能通过左右移动来控制了，额外的几个方法都是跟记分有关系的，先略过不提。<br />先来看看它的构造方法：<br /><br />  public BallPlayer(Image img, int fw, int fh) {<br />    super(img, fw, fh);<br />    this.step = fw / 2;<br />  }<br /><br />主要工作都由它的父类Sprite做了，给出一幅图像，这个图像是用PNG格式提供的，大家可能留意到不是一幅单一的图像，而是有点象帧动画中的几个关键帧，不错，的确如此，构造方法中的后两个参数就是告诉Sprite如何分割这幅图像的。这里整个Player共有6个关键帧，比较粗糙，呵呵，自己动手截屏做的:)<br /><br />Field step是用来控制主角的移动步伐的，为了快一点，取了它身宽的一半。<br /><br />接下来我们看看如何移动它，就是通过这样两个方法来左移和右移。<br /><br />  public void left() {<br />    prevFrame();<br />    if( (getX() - step) &gt;= -12 ) {<br />      move( -1 * step, 0);<br />    }<br />  }<br />  public void right () {<br />    nextFrame();<br />    if((getX() + step) &lt; canvas.getWidth()) {<br />      move(step, 0);<br />    }<br />  }<br /><br />留意一下，这里只管相对位移，主角的开始位置通过setPosition来设定，在运动过程中最好就不要直接设置位置了，增大计算量，要不就看起来动作不自然了。<br /><br />接下来简单说一下配角－－球。球的构造跟主角类似，只是为了节省构造销毁对象带来的开销，这个对象是一直存在的，也就是让它掉下去了又自己起来，并根据记分来确定下落速度，简单地用线程实现的，没怎么仔细设计，大家看看代码就清楚了。<br /><br />再来看看CanvasGetBall这个类，它从GameCanvas继承，并实现了CommandListener和Runnable两个接口，是整个游戏中最复杂的一个类了，主要工作有如下几个部分，实例化主角，配角对象，还有背景对象，音乐等，并在适当的时候画出这些对象，在顶部画出些状态信息，并根据玩家操作开始和暂停游戏，并显示相应画面。并通过进行碰撞检测来判定玩家是否接到了小球。<br />检测方法如下：<br />  private boolean notMiss( ) {<br />//    return player.collidesWith(ball,false);<br />    int ballCX = ball.getX() + ball.getWidth()/2;<br />    int ballCY = ball.getY() + ball.getHeight()/2;<br />    int playerCX = player.getX() + player.getWidth()/2;<br />    int playerCY = player.getY() + player.getHeight()/2;<br />    return ((Math.abs(playerCX - ballCX)&lt; ball.getWidth()/2) &amp;&amp;<br />            (Math.abs(ballCY - playerCY) &lt; 5));<br />  }<br />被注释掉的一行是直接用Sprite的碰撞检测，下面的部分是自己计算两幅图像有没有重叠，效果差不多。其中collidesWith()的第二个参数是告诉内部方法是否要用像素级别的检测，通常答案是千万不要，这很慢的，而且没有必要这么精确。<br /><br />为了说明整个游戏的控制逻辑，我们先来看看MIDletGetBall这个类，跟通常的MIDlet略有不同，因为我把主线程放在了CanvasGetBall中，MIDletGetBall只是简单地控制主线程就行了。<br /><br />  public void startMainThread() {<br />    Display.getDisplay(this).setCurrent(displayable);<br />    if(mainThread != null) {<br />      mainThread = null;<br />      Runtime.getRuntime().gc();<br />    }<br />    mainThread = new Thread(displayable);<br />    mainThread.start();<br />  }<br />其中第一行就是设置当前显示页面；也就是显示CanvasGetBall。<br /><br />回到CanvasGetBall，整个游戏分几个阶段，相应有不同的画面和命令接口，详细说明如下：<br />1. 等待开始，对应在方法ready(): <br />     public void ready() {<br />        cover.setTitle(TIPS[2]);<br />        cover.addCommand(playCommand);<br />        Display.getDisplay(MIDletGetBall.instance).setCurrent(cover);<br />     }<br />    为了绘制方便，这里单独用了个GameCanvas来绘制提示信息和响应命令，并根据玩家操作在CanvasCover和CanvasGetBall两个画面之间来回切换。<br /><br />2. 游戏画面，包括启动和结束两个方法：<br /> public void start() {<br />    if(!playing) {<br />      strTip = TIPS[0];<br />      playing = true;<br />      MIDletGetBall.instance.startMainThread();<br />      removeCommand(playCommand);<br />      removeCommand(resumeCommand);<br />      addCommand(pauseCommand);<br />      ball.start();<br />      try {<br />        if(tonePlayer != null) {<br />          tonePlayer.start();<br />        }<br />      }<br />      catch (MediaException ex) {<br />        tonePlayer.close();<br />        tonePlayer = null;<br />      }<br />    }<br />  }<br />  public void stop () {<br />    if(playing) {<br />      ball.stop();<br />      strTip = TIPS[1];<br />      try {<br />        Thread.sleep(300);<br />      }<br />      catch (InterruptedException ex) {<br />      }<br />      playing = false;<br />      removeCommand(pauseCommand);<br />      addCommand(resumeCommand);<br />      try {<br />        tonePlayer.stop();<br />      }<br />      catch (MediaException ex1) {<br />        tonePlayer.close();<br />        tonePlayer = null;<br />      }<br />    }<br />  }<br /><br /> 并对应设置相应的命令来让玩家能够继续下去，构成一个简单的封闭控制环路。<br /><br />3.游戏结束，对应方法gameover()<br />  public void gameover() {<br />    this.stop();<br />    cover.setTitle(TIPS[3]);<br />    cover.removeCommand(playCommand);<br />    cover.addCommand(restartCommand);<br />    Display.getDisplay(MIDletGetBall.instance).setCurrent(cover);<br />  }<br /><br /><br />说到这里，基本上也就把它讲完了，具体内容请详细研究源码，其实没必要看太多书，深入地研究一个问题并根据自己的理解来改进或者是修正它，实践才是最好的老师，希望大家能够有所收获。<br /><br />总结一下，这个游戏存在的问题有如下几个：<br />1. 没有好的Game Play，画面很差；<br />2. 可玩性不强，控制比较单调；<br />3. 游戏声音过于单调；<br />4. 运行速度有些慢。<br /><br />但作为一个技术Demo，它涵盖了Game包中的所有内容，并提供了一个利用线程方式实现简单游戏的方法，很简单，但不适合真实的游戏，比较费时。<br />背景处理很差，可以通过一个Map来分割组合处理背景小片，能让游戏场景变得生动些，可以实现类似于卷轴游戏的效果，自己试试吧！<br /><br />附：源代码和工程，在JBuilderX下编译，同时需要WTK2.0或以上版本。好久没有用Jbuilder了，买不起正版:),现在主要开发工具是Eclipse和EclipseME,感觉非常爽，免费的也有好货。<br /><br /></div></div>
<img src ="http://www.blogjava.net/bwlee/aggbug/48193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2006-05-25 21:32 <a href="http://www.blogjava.net/bwlee/archive/2006/05/25/48193.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 中与Subversion对接</title><link>http://www.blogjava.net/bwlee/archive/2006/02/20/31621.html</link><dc:creator>小李飞刀</dc:creator><author>小李飞刀</author><pubDate>Mon, 20 Feb 2006 04:56:00 GMT</pubDate><guid>http://www.blogjava.net/bwlee/archive/2006/02/20/31621.html</guid><wfw:comment>http://www.blogjava.net/bwlee/comments/31621.html</wfw:comment><comments>http://www.blogjava.net/bwlee/archive/2006/02/20/31621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bwlee/comments/commentRss/31621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bwlee/services/trackbacks/31621.html</trackback:ping><description><![CDATA[<div align="left">Subversion号称是CVS的更好版本，具体有多好我没有深入比较过，但总体感觉到是没多少问题，由于需要同时使用Trac来管理需求和Bug，也就先用上了它，不过也有了新的问题，就是Eclipse中缺省是支持CVS的，使用起来非常方便，但对Subversion就没有那么方便了，所幸在网络上找到了Subclipse插件，到是很快地解决了这个问题，具体内容我就不翻译了，因为原文上有每一步骤的图片。<br><br><a href="http://subclipse.tigris.org/install.html">具体安装配置</a><br></div><img src ="http://www.blogjava.net/bwlee/aggbug/31621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bwlee/" target="_blank">小李飞刀</a> 2006-02-20 12:56 <a href="http://www.blogjava.net/bwlee/archive/2006/02/20/31621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>