如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
本课教学内容游戏开发介绍javax.microedition.lcdui.game树型图如图所示:GameCanvas类GameCanvas类设计流程GameCanvas类之构造方法GameCanvas类之构造方法GameCanvas类之构造方法publicintgetKeyStates()该函数在特殊键被禁用时,可以得到当前被按下的特殊键的状态。这样虽然禁用了特殊键,但通过getKeyStates函数,反而解放了特殊键(上下左右键和选择键以及键盘上的1、3、7、9键),而屏蔽了其他键,让游戏中的键盘判断能够很好地移植到线程中去执行。游戏画布之键盘策略一般情况下,可以用如下方法查询某个键是否被按下:方法1:if(this.getKeyStates()==某个返回值);如下代码:判断“1”键是否被按下。方法2:if((this.getKeyStates()&某个返回值)!=0)。如下代码:判断“1”键是否被按下。游戏画布之画图策略游戏画布之画图策略注意:画好的图放在内存里面,如果要在界面上显示,则还需要调用:该函数的作用是将内存缓冲内画好的图在界面上显示。图层Layer意为图层,可以表示画布上的某个可视的物体,是抽象类,一般情况下我们可以扩展它。在GameAPI中,提供了两个子类:javax.microedition.lcdui.Sprite:图层的子类,可以充当游戏中的运动角色,如子弹、汽车等。javax.microedition.lcdui.TiledLayer:图层的子类,可以充当游戏中的静态角色,如环境角色、地图等。图层图层图层Sprite类简介设计流程Sprite类的构造函数示例:创建Sprite对象构造函数2:publicSprite(Imagei,intframeWidth,intframeHeight):将一幅图片封装至Sprite对象,并分割。该构造函数用于创建带动画的Sprite,将在后面讲解。privateSpritesprite;privateImagespriteImage;try{spriteImage=Image.createImage(“/npc01.png”);}catch(Exceptione){}sprite=newSprite(spriteImage,32,48);构造函数3:publicSprite(Sprites):将另一个Sprite封装至Sprite对象,该构造函数使用较少。很明显,第一个构造函数使用较多。Sprite常用函数示例很多游戏中的角色还有碰撞的效果。如飞机遇到子弹之后就爆炸,汽车撞到墙等等,实际上是一个碰撞的问题。那么怎样知道两个物体碰撞了呢?在Sprite中,对碰撞检测也具有一定的支持。对于像素碰撞检测,往往把Sprite的背景色设置为相同的颜色,碰撞检查的时候就只判断两个图片除背景色以外的其他像素是否发生了重叠。像素碰撞检测比较精确,但计算复杂,浪费大量的系统资源,所以一般没有特殊要求都使用矩形碰撞检测。下面的例子两个矩形发生了碰撞但飞机和导弹并没有发生碰撞,如图4所示。(1)publicfinalbooleancollidesWith(Sprites,BooleanpixelLevel)很明显,该函数的第一个参数是被检测的碰撞对象;第二个参数是一个boolean类型,意义如下:如果为true,则认为两个Sprite上不透明点发生了重叠,就算碰撞,即像素检测;如果为false,则认为两个Sprite所在矩形区域发生了重叠,就算碰撞,即矩形检测。(2)publicfinalbooleancollidesWith(TitledLayert,BooleanpixelLevel)该函数参数1表示和Sprite进行碰撞检测的TiledLayer,关于TiledLayer我们将在下一章进行讲解;参数2和前面所述相同。(3)publicfinalbooleancollidesWith(Imageimage,intx,inty,BooleanpixelLevel):检测一个精灵和一个图片是否发生碰撞。x,y是图片左上角的横坐标和纵坐标。Sprite里面有一个重要函数:publicvoiddefineCollisionRectangle(intx,inty,intwidth,intheight)该函数在Sprite上定义一个矩形区域,如果其他Sprite或者图片的像素点进入了这个区域,则视为碰撞。此指定的矩形是相对于未经变换的Sprite的左上角。Sprite旋转Sprite对旋转具有较好的支持。打开文档,找到javax.microedition.lcdui..game.Sprit