您所在的位置: 首页 > 移动开发 > j2me > 游戏开发 >

j2me实现图片透明效果

j2me之家  作者:admin  2009-06-30 20:16  点击:   我要评论( )
  • 摘要:j2me实现图片透明效果 透明效果的设计,是开发游戏以及UI的常谈话题,小弟整理了下关于透明效果的嗲们,有兴趣的朋友可以看看 代码 /** * * @author Jagie * */ public class ShadowMIDlet extends
  • Tags: 透明 图片 int // 效果 实现

j2me实现图片透明效果

透明效果的设计,是开发游戏以及UI的常谈话题,小弟整理了下关于透明效果的嗲们,有兴趣的朋友可以看看

代码
/**
*
* @author Jagie
*
*/
public class ShadowMIDlet extends MIDlet {
Canvas c = new ShadowCanvas();
public ShadowMIDlet() {
}
protected void startApp() throws MIDletStateChangeException {
Display.getDisplay(this).setCurrent(c);
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
/**
*
* @author Jagie
*
*/
class ShadowCanvas extends Canvas implements Runnable {
int w, h;
// 原始图片
Image srcImage;
// 原始图片的像素数组
int[] srcRgbImage;
// 渐变图片的像素数组
int[] shadowRgbImage;
int imgWidth, imgHeight;
int count;
public ShadowCanvas() {
w = this.getWidth();
h = this.getHeight();
try {
srcImage = Image.createImage("/av.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
imgWidth = srcImage.getWidth();
imgHeight = srcImage.getHeight();
// 制造原始图片的像素数组,用一个int来代表每一个像素,按位表示方式是:0xAARRGGBB
srcRgbImage = new int[imgWidth * imgHeight];
// 获取原始图片的所有像素,参见MIDP APPI文档
srcImage.getRGB(srcRgbImage, 0, imgWidth, 0, 0, imgWidth, imgHeight);
shadowRgbImage = new int[srcRgbImage.length];
System.arraycopy(srcRgbImage, 0, shadowRgbImage, 0,
shadowRgbImage.length);
// 渐变图片的所有像素已开始都是全透明的
for (int i = 0; i < shadowRgbImage.length; i++) {
shadowRgbImage &= 0x00ffffff;
}
new Thread(this).start();
}
public void paint(Graphics g) {
g.setColor(0, 0, 0);
g.fillRect(0, 0, w, h);
// 绘制渐变图片
g.drawRGB(shadowRgbImage, 0, imgWidth, (w - imgWidth) / 2,
(h - imgHeight) / 2, imgWidth, imgHeight, true);
g.setColor(0, 255, 0);
g.drawString("count=" + count, w / 2, 30, Graphics.HCENTER
| Graphics.TOP);
}
public void run() {
while (true) {
boolean changed = false;
// 改变渐变图片的每一个像素
for (int i = 0; i < shadowRgbImage.length; i++) {
// 获取渐变图片的某一像素的alpha值
int alpha = (shadowRgbImage & 0xff000000) >>> 24;
// 原始图片的对应像素的alpha值
int oldAlpha = (srcRgbImage & 0xff000000) >>> 24;
if (alpha < oldAlpha) {
// alpha值++
shadowRgbImage = ((alpha + 1) << 24) | (shadowRgbImage & 0x00ffffff);
changed = true;
}
}
try {

【编辑推荐】

  1. RPG游戏脚本的设计教程
  2. J2ME游戏开发的高级优化技巧
  3. 俄罗斯方块游戏的设计和实现(MIDP)
  4. j2me游戏引擎程序结构

J2ME游戏开发技巧(2)
MIDP中尝试粒子系统
各个手机平台对JSR规范支持大全 nokia 一部分
利用MIDP2.0开发游戏 (3) 添加背景和前景
J2ME开发手机游戏物理模型之抛物线
loading.. 评论加载中....

频道推荐

更多>>
  • 古堡惊魂-密室

  • 类型:冒险解谜
  • 十五世纪时,罗马尼亚中部特兰西瓦尼亚有一座古堡,名为拜恩古堡。据说,这里住着一位名叫德古拉的伯爵,所以..

推荐博文