- 浏览: 5819739 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
该方法网上可以找到,我添加了一个重载函数:
public Image getPalettedImage(String path, int[] originalColors,
int[] palettedColors)
三个参数依次为图片路径、需要改变的旧颜色值、新的颜色值,注意这2个参数都为数组,长度必须一致,这样可以一次改变多种颜色。
用法:
PalettedImage p=new PalettedImage();
Image newImage=p.getPalettedImage("/Humans121.png", new int[]{0x0000ff}, new int[]{0x00ff00});
...
g.drawImage(newImage, 0, 0, 0);
public Image getPalettedImage(String path, int[] originalColors,
int[] palettedColors)
三个参数依次为图片路径、需要改变的旧颜色值、新的颜色值,注意这2个参数都为数组,长度必须一致,这样可以一次改变多种颜色。
用法:
PalettedImage p=new PalettedImage();
Image newImage=p.getPalettedImage("/Humans121.png", new int[]{0x0000ff}, new int[]{0x00ff00});
...
g.drawImage(newImage, 0, 0, 0);
import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import javax.microedition.lcdui.Image; public class PalettedImage { public Image getPalettedImage(String path, int[] originalColors, int[] palettedColors) { InputStream is = null; ByteArrayOutputStream baos = null; try { is = getClass().getResourceAsStream(path); baos = new ByteArrayOutputStream(); int ch = 0; while ((ch = is.read()) != -1) { baos.write(ch); } } catch (IOException ioe) { System.out.println(ioe); } finally { try { if (baos != null) baos.close(); if (is != null) is.close(); } catch (IOException e) { System.out.println(e); } } return getPalettedImage(baos.toByteArray(), originalColors, palettedColors); } /* * 原始图片的byte数组,以及需要替换颜色的颜色值还有目标颜色值就行了。 因为可以同时替换多个颜色,所以输入参数是代表颜色的整形的数组。 * 总之,要保证原始颜色与目标颜色一一对应就好了 */ public Image getPalettedImage(byte[] data, int[] originalColors, int[] palettedColors) { byte[] tempData = new byte[data.length]; System.arraycopy(data, 0, tempData, 0, data.length); Image img = null; int[] parameter = { 0, 0, 0 }; analyze(tempData, parameter); for (int i = 0; i < originalColors.length; i++) { replaceColor(tempData, parameter, originalColors[i], palettedColors[i]); } fillData(tempData, parameter); try { img = Image.createImage(tempData, 0, data.length); } catch (Exception e) { System.out.println("getPalettedImage && " + e.toString()); } return img; } private void analyze(byte[] data, int[] para) { int offset = 8; int chunkLen = 0; while (data[offset + 4] != 0x50 || data[offset + 5] != 0x4c || data[offset + 6] != 0x54 || data[offset + 7] != 0x45) { chunkLen = readInt(data, offset); offset += (4 + 4 + chunkLen + 4); } chunkLen = readInt(data, offset); para[2] = chunkLen / 3; para[0] = offset + 8; para[1] = offset + 8 + chunkLen; } private int readInt(byte[] data, int offset) { return ((data[offset] & 0xFF) << 24) | ((data[offset + 1] & 0xFF) << 16) | ((data[offset + 2] & 0xFF) << 8) | (data[offset + 3] & 0xFF); } private void replaceColor(byte[] data, int[] para, int oldColor, int newColor) { byte rr = (byte) ((oldColor >> 16) & 0xff); byte gg = (byte) ((oldColor >> 8) & 0xff); byte bb = (byte) (oldColor & 0xff); for (int i = 0, offset = para[0], temp = 0; i < para[2]; i++, offset += 3) { if (rr == data[offset] && gg == data[offset + 1] && bb == data[offset + 2]) { data[offset] = (byte) ((newColor >> 16) & 0xff); data[offset + 1] = (byte) ((newColor >> 8) & 0xff); data[offset + 2] = (byte) (newColor & 0xff); break; } } } private void fillData(byte[] data, int[] para) { int checksum = update_crc(data, para[0] - 4, para[2] * 3 + 4); data[para[1]] = (byte) ((checksum >> 24) & 0xff); data[para[1] + 1] = (byte) ((checksum >> 16) & 0xff); data[para[1] + 2] = (byte) ((checksum >> 8) & 0xff); data[para[1] + 3] = (byte) ((checksum) & 0xff); } private int update_crc(byte[] buf, int off, int len) { int c = 0xffffffff; int n, k; int xx; int[] crc_table = new int[256]; for (n = 0; n < 256; n++) { xx = n; for (k = 0; k < 8; k++) { if ((xx & 1) == 1) { xx = 0xedb88320 ^ (xx >>> 1); } else { xx = xx >>> 1; } } crc_table[n] = xx; } for (n = off; n < len + off; n++) { c = crc_table[(c ^ buf[n]) & 0xff] ^ (c >>> 8); } return (c ^ 0xffffffff); } }
发表评论
-
3个RPG练习,最后一个是卡马克卷轴
2010-12-11 18:02 2361import javax.microedition.lcd ... -
j2me小练习,教学用
2010-12-07 20:42 1844有用的J2ME功能函数 ... -
自己早期做的一个基于j2me的飞行射击类游戏
2010-12-07 20:23 2130早期的代码,MVC思想 -
自己早期做的一个基于j2me的魔塔
2010-12-07 20:13 2102上面一个不完整,但代码好(MVC),但没抽出类; 下面一个比 ... -
j2me中的A*算法
2010-12-02 14:08 2065import javax.microedition.mid ... -
j2me代理连接返回码总是400的问题
2010-09-21 16:24 2769400是因为错误的语法导致服务器无法理解请求信息。 Con ... -
当显示内容过多时的滚屏类Container.java
2010-09-16 11:32 2169很多时候,由于手机屏幕太小,一下子显示不了那么多内容,这个时候 ... -
j2me读取中文的配置文件
2010-09-14 20:25 2166还可以参考这篇文章: http://gundumw100.it ... -
使用jsr172解析xml
2010-09-14 10:40 1963基类: import java.io.ByteArrayI ... -
面向对象的RMS操作
2010-09-14 10:29 1715将需要保存的数据集中起来形成一个model类,并且要实现序列化 ... -
Java版数独算法实现
2010-09-10 16:32 16360数独的历史: 数独前身为“九宫格”,最早起源于中国。数千 ... -
使用KXML解析xml数据
2010-09-10 13:05 9335最近做项目,服务器传过来的都是Xml格式的数据,需要解析xml ... -
类似小球列表的选择控件(9宫格)
2010-08-27 15:50 1763import javax.microedition.lcd ... -
j2me工具类:TextUtil.java
2010-08-11 21:24 1710import java.util.Vector; i ... -
j2me工具类:Database.java
2010-08-11 21:18 2023/** * <p>Title: & ... -
j2me工具类:ReadFromFile.java
2010-08-11 21:15 4340import java.io.*; import jav ... -
j2me竖向滚动菜单的基本做法
2010-08-11 16:58 2031public class AppCanvas extend ... -
j2me工具类:声音播放类SoundUtil
2010-06-04 23:21 2135用法: 将需要播放的音乐都罗列在name,type数组中,需要 ... -
地图编辑器Mappy下载
2010-05-25 22:30 3331简单的手机游戏地图编辑器,共享之。。。 eclipseme下 ... -
将Image对像转换为png格式的byte数组
2010-04-15 12:48 2626原理上说 1 获取Image 的ARGB数据 2将ARGB ...
相关推荐
J2ME游戏编程:TP319:G899 W511.iso 随书光盘,欢迎大家下载 大家共享^A^
10. **调试与优化**:掌握使用J2ME的调试工具和技巧,以及如何优化代码以提高性能和电池寿命。 教程中的每个`.rar`文件可能代表不同的章节或主题,例如,日期可能是文件创建或更新的日期。通过逐步学习这些PPT,你...
**J2ME简介** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专为嵌入式设备和移动设备设计。它提供了一种轻量级的、高效的环境来开发应用程序,如手机、电视、冰箱等智能家电以及各种手持设备。J2ME由一组...
这个游戏是基于是男人就下100层的理念,这是本人在j2me开发的学习过程中的一点心得体会。本资源用JBuilder可直接打开,并且注释齐全。其中还有打好的jar包,可直接放入手机运行,分辨率为240*320,提供给大家学习...
/* * 一个简单的俄罗斯方块游戏代码,代码中主要包含3个类: *TerrisMIDlet——MIDlet类 *GameCanvas——游戏界面类 *GameEngine——游戏逻辑类 *已经使用WTK2.5.2运行通过. */
"android_game android J2ME site:en.pudn.c"这部分标签揭示了该资源可能包含的内容,即关于Android游戏开发的知识,以及可能与J2ME(Java 2 Micro Edition)平台的迁移或转换相关的指导。 【描述】提到的“$兩小時...
分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME...
这个错误表明Java虚拟机(JVM)遇到了一个它无法识别或者处理的类文件版本。在JBuilder 2006环境下开发J2ME应用时,如果你遇到了这个错误,可能是由于以下原因导致的: 1. **JDK版本不匹配**:JBuilder 2006可能与...
3. **MIDP API**:这是J2ME游戏开发的关键,包括Canvas类用于绘制游戏画面,Graphics对象进行图形绘制,以及键盘和触摸事件的处理。 4. **用户界面(UI)设计**:MIDP提供了一些基本的UI组件,如ChoiceGroup、...
**J2ME(Java 2 Micro Edition)工具篇** J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机、PDA等。开发J2ME应用程序时,选择合适的工具至关重要,这些工具能够提升开发效率,简化调试过程,并...
- **J2ME**:通过 `Canvas` 类的 `getHeight()` 和 `getWidth()` 方法获取。 - **Android**:通过 `WindowManager.getDefaultDisplay()` 获取屏幕对象,然后调用 `getWidth()` 和 `getHeight()` 方法获取屏幕宽度...
1. **Canvas类**:J2ME游戏通常基于Canvas类构建,这是一个可以进行图形绘制的空白画布。开发者可以重写Canvas的`paint()`方法来实现游戏的渲染。 2. **Graphics对象**:在Canvas上绘图使用Graphics对象,它可以...
- MIDP GUI组件:J2ME中的用户界面主要通过Canvas类构建,Canvas是绘制自定义图形的基础类。此外,可能还会用到Form和Item等组件。 - LCDUI(Limited Conformance Display User Interface):这是MIDP的一部分,...
"j2me的一些工具类"这个压缩包可能包含了一些开发者自定义的实用工具类,这些类可以提高代码的复用性和可维护性。 首先,让我们了解一下J2ME的基本结构。J2ME通常由配置(Configuration)、特性(Profile)和包...
J2ME中的键盘和触摸事件处理通常基于 MIDP 的Command和GameCanvas类。 3. **游戏逻辑**:实现五子棋的核心算法,包括检查棋局合法性(确保没有棋子在同一位置上)、判断胜负(检查是否有五个连续的棋子)以及AI...
【ToolME-0.2.0.zip】是一个包含J2ME(Java 2 Micro Edition)开发工具类的压缩包。J2ME是Java平台的一个子集,主要用于移动设备、嵌入式系统等资源有限的环境。这个压缩包的版本号为0.2.0,表明这可能是该工具类库...
总的来说,j2me-engine是J2ME平台上开发游戏的得力工具,它降低了开发门槛,提高了开发效率,使开发者能够专注于创造有趣且引人入胜的游戏体验。虽然现代移动设备更多地转向了更强大如Android和iOS的平台,但对J2ME...
实用J2ME记录库工具类,在很多代码中都要用到
这通常包括安装Java SDK(标准版)和一个J2ME开发工具,如NetBeans或Eclipse,它们提供了对J2ME项目的支持。你还需要配置模拟器或者连接实际设备进行测试。 【J2ME图形界面与用户交互】 在"俄罗斯方块"游戏中,...
J2me实用工具20合1