j2me手机游戏结构分析和实际小例子系列二 游戏背景游戏精灵与按钮的关联
       上文中我说到有关游戏背景和游戏精灵的简单显示问题,这次我将接着上次说下有关游戏背景、游戏精灵与手机上按钮关联的问题。
       手机上有最起码的上下左右四个按钮,那么在系列一中显示的背景和精灵要根据按钮进行变换,举个例子说就是如果一上来有一个小人在屏幕中间,那么当我点击左的时候,小人应该向左走,并且背景地图应该向右移动(为什么这样应该不用我具体说明吧!汗!)。有了上次的基础(系列一中也有类图,我就不在这里具体说,没看过的朋友可以去看一下),我可以开始在其基础上添加一些内容来继续扩充类图,如下:
j2me手机游戏结构分析和实际小例子系列二 游戏背景游戏精灵与按钮的关联_j2me
为了方面扩展,我都是使用接口的方式来实现的,现在Runnable接口中的run方法已经开始控制线程动作。ThreadControl中的start方法用来打开该线程。ButtonsControl对象是为了实现控制代码和显示代码的分开(按照VCM的设计思想来嘛),DirectionKey是方向按钮按钮,keyPressed是事件按钮,之所以这里将其分开,是为了区分事件的类别,当然喜欢放在一起也可以。MyLayer对象中新加一个doGameAction方法,在这里我们可以通过这个接口来控制PlayerSprite和游戏背景,PlayerSprite的超类是Sprite,游戏背景我封装成了BackGround对象,他的超类是TiledLayer
       上面我将这个新加的对象给大家介绍了一下,下面我来具体的说明一下和这些对象的必要性分析。
       首先是有关两个线程方面的接口,涉及到游戏就肯定有多线程,run方法是用来启动MyCanvas的监控线程,start是用来打开MyCanvas线程本身。整个游戏的入口是MIDlei对象,可以加载窗体或者MIDlei等对象,我个人将其当作是一个容器来看待。
       游戏精灵的加载,我认为有必要与超类分离并根据需要扩展子类(万一以后用呢,在这里我个人不建议之间使用Sprite对象)。绘制地图为了实践结构上的整齐当然也是要分类封装的。Sprite对象我建议大家有兴趣可以去学习一下,看看j2meapi说明之类的。绘制地图是按照矩阵的方式进行绘制的。详细的说明可以看LayerManager的说明,说的不能再详细了,相信大家看看就会。
       还有一个主要的地方就是按钮和游戏精灵地图之间的沟通了(说响应也可以呀)。LayerManager对象中的doGameAction方法就是沟通方法,在j2me中传的值都是int类型的,朋友注意一下就可以了。
       系列一、系列二说的并不是很难,因为现在设计的东西也不多,不过我现在慢慢填充和丰富结构设计。慢慢来,后面还会接着有内容哦,呵呵!