} /**
g.setColor(255,255,255);
g.fillRect(0,0,getHeight(),getWidth());
//取得NEC扩展Graphics
NxGraphics ng = NxGraphics.getNxGraphics(g); ng.drawSpriteSet(spriteSet);
* 按键处理 */
protected void keyPressed(int keycode) {
switch(keycode){ }
//使球运动
case -1:{ } case -2:{ } case -3:{ } case -4:{ } default:{ }
break; ball2X += 3; break; ball2X -= 3; break; ball2Y += 3; break; ball2Y -= 3; break;
}
} ball2.setLocation(ball2X,ball2Y); ball2.setVisible(true); //进行球的碰撞判定 spriteSet.setCollisionAll(); if(spriteSet.getCollisionFlag(1) == Integer.parseInt(\ } //再次描画 repaint(); ball1.setVisible(false); 实际运行上述演示程序的结果如下所示。
使移动。
发生碰撞后画面上部的球消失。
上述演示程序的碰撞判定如下所示。 //进行球的碰撞判定 spriteSet.setCollisionAll(); if(spriteSet.getCollisionFlag(1) == Integer.parseInt(\ }
进行碰撞判定时,必须使用setCollisionOf和setCollisionAll方法。然后,通过isCollision或者getCollisionFlag方法取得结果。
getCollisionFlag 方法的返回值是int型。第n项的Sprite和,由指定的自变量索引指定的Sprite发生碰撞,第n项的bit变为1,而不发生碰撞则为0。也就是说,与第三项的Sprite发生碰撞时,由二进数返回“100”的值。第五项和第二项的Sprite发生碰撞时,由二进数返回“10010”的值。
使用getCollisionFlag方法调查与第n项Sprite发生的碰撞时,使用以下计算式。spriteSet.getCollisionFlag(x) % 2的n次方的值 >= 2的(n-1)次方的值
下面是判断与第三项Sprite发生碰撞的例子。 If( spriteSet.getCollisionFlag(2) % 8 >= 4){ System.out.println(“碰撞!!!!!!”); }else{ ball1.setVisible(false); }
System.out.println(“不碰撞”); 2.3. 颜色变换
利用ImageEffector类,能够改变图片的颜色,而被指定的颜色可以进行最多两种颜色的变换。例如,在选择时/非选择时描画已改变颜色的图标图片,或者描画只有颜色不同的肖像画时,使用该颜色变换功很方便。
ImageEffector 类中有以下的方法。
static javax.microedition.lcdui.Image changeColors(javax.microedition.lcdui.Image image, int[][] colormap, int nelems)
使用changeColors 方法进行颜色变换。在image中,指定变换前的画面,在colormap中指定colormap来改变颜色。在Nelems中指定进行变换的颜色的数量。 例如,把某画面图片image的蓝色变为红色时,如下所示书写。 int[][] colormap= {{ 0,0,255},
颜色变换用的colormap是二次元排列,RGB三要素的值按以下所示进行指定。 1色调的色替换设定
colormap[0][0] = 变换对象RGB色1的R値; colormap[0][1] = 变换对象RGB色1的G值; colormap[0][2] = 变换对象RGB色1的B值; colormap[1][0] = 变换结果RGB色1的R值; colormap[1][1] = 变换结果RGB色1的G值; colormap[1][2] = 变换结果RGB色1的B值; 2色调的色替换设定
colormap[2][0] = 变换对象RGB色2的R値; colormap[2][1] = 变换对象RGB色2的G值; colormap[2][2] = 变换对象RGB色2的B值; colormap[3][0] = 变换结果RGB色2的R值; colormap[3][1] = 变换结果RGB色2的G值; colormap[3][2] = 变换结果RGB色2的B值;
{255,0,0}}; ImageEffector.changeColors(image, colormap, 1);
相关推荐: