当前页面: 开发资料首页 → J2ME 专题 → 请教一个 J2ME 中的 JNI 问题
请教一个 J2ME 中的 JNI 问题
摘要: 请教一个 J2ME 中的 JNI 问题
我需要重写 javax.microedition.lcdui.game 几个类,因为这几个类跟我的需求不是很符合
也就是 Layer、Sprite、TiledLayer、LayerManager这几个类
我反编译后查看TiledLayer类的源代码,发现地图类里的paint(Graphics g)函数使用了一个JNI接口
private native void drawTiledRegion(Graphics g, Image image, int i, int ai[], int ai1[], int j, int k,
int l, int ai2[], int ai3[], int i1);
这是画图的主要实现部分。
可是它的类里面也没有类似
static{
System.loadLibrary("somedll");
}这样的语句
所以我不知道它调用的库在哪里
我想改写的部分跟这里的代码无关,也就是说我要写一个自己的类,但还是希望可以用它的这个JNI接口,那该怎么做呢?
这些东西是虚拟机实现,我觉得你改变不了.
JNI 是连接java class跟native code的一个接口,在生成虚拟机的时候已经将native跟java的映射关系写到一个特定的cpp文件中了,楼主想改写这个接口,站在开发层面来讲,几乎不可能。
除非你去修改底层,跟我一样,做虚拟机移植。
标准的me规范是没有向开发者提供jni功能的。
drawTiledRegion 你可以用setClip + drawImage实现~~