站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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实现~~


↑返回目录
前一篇: Nokia3120开发环境???
后一篇: 为什么我的midlet实现了ItemStateListener后,手机上就总是安装不上?