最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

如何把J2ME游戏移植到Android平台

来源:动视网 责编:小OO 时间:2025-09-24 10:30:02
文档

如何把J2ME游戏移植到Android平台

1.平台比较J2me:开发平台Android:操作系统2.工程结构比较(源代码,资源文件夹,图片,数据)J2me:Res:资源文件Src:源代码Android:Src:源代码Res\\drawable:图片Res\aw:声音Res\\values:字符串Assets:数据文件3.安装包比较J2me:Jad,jarAndroid:apk4.代码结构比较J2me:MIDlet,CanvasAndroid:Activity,View都采用继承的方式,都只有一个MIDlet/Activity,一般都只
推荐度:
导读1.平台比较J2me:开发平台Android:操作系统2.工程结构比较(源代码,资源文件夹,图片,数据)J2me:Res:资源文件Src:源代码Android:Src:源代码Res\\drawable:图片Res\aw:声音Res\\values:字符串Assets:数据文件3.安装包比较J2me:Jad,jarAndroid:apk4.代码结构比较J2me:MIDlet,CanvasAndroid:Activity,View都采用继承的方式,都只有一个MIDlet/Activity,一般都只
1. 平台比较

J2me:

开发平台

Android:

操作系统

2. 工程结构比较(源代码,资源文件夹,图片,数据)

J2me:

Res:资源文件

Src:源代码

Android:

Src:源代码

Res\\drawable:图片

Res\

aw:声音

Res\\values:字符串

Assets:数据文件

3. 安装包比较

J2me:

Jad,jar

Android:

apk

4. 代码结构比较

J2me:

MIDlet,Canvas

Android:

Activity,View

都采用继承的方式,都只有一个MIDlet/Activity,一般都只有一个Canvas/View

5. 代码细节比较

l 全屏设置

J2me:

在Canvas类中调用SetFullScreenMode(Boolean)

Android:

在Activity类中调用

//设定全屏显示

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

2 获得屏幕尺寸

J2me:

Canvas类的getHeight()和getWidth()方法

Android:

int screenWidth,screenHeight;

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();

screenWidth = display.getWidth();

screenHeight = display.getHeight();

3 Display

J2me:

Display dis=Display.getDisplay(MIDlet);

Android:

Display display = windowManager.getDefaultDisplay();

4 画布类

J2me:

Canvas

Android:

继承View类,定义构造方法:

public MyView(Context context)

{

super(context);

}

5 屏幕绘制方法

J2me:

Paint(Graphics)

Android:

void onDraw(Canvas g)

6 Graphics

J2me:

Android:

7 Image的创建

J2me:

Image.createImage(path);

Android:

img = BitmapFactory.decodeResource(getResources(),R.drawable.map0);

8 Font的创建,Font使用,字体设置

J2me:

Android:

9 drawImage

J2me:

Android:

public void drawBitmap(Bitmap bitmap, float left, float top, Paint paint)

多个重载

10 字符串绘制

J2me:

Android:

public native void drawText(String text, float x, float y, Paint paint);

多个重载

11 setClip

J2me:

Android:

public boolean clipRect(float left, float top, float right, float bottom,Region.Op op)

最后一个参数为:Region.Op.REPLACE

12旋转

J2me:

drawRegion()

drawImage()

Android:

还没找到好的方法,不过可以先创建一张翻转后的图片,再使用,封装好的代码如下:

//创建翻转图片

public Bitmap createTransImage(Bitmap img,int trans)

{

// Bitmap img;

try

{

// img = BitmapFactory.decodeResource(getResources(),sImg);

int width = img.getWidth();

int height = img.getHeight();

int newWidth = 200;

int newHeight = 200;

// calculate the scale - in this case = 0.4f

float scaleWidth = ((float) newWidth) / width;

float scaleHeight = ((float) newHeight) / height;

// createa matrix for the manipul

ation

Matrix matrix = new Matrix();

// resize the bit map

matrix.postScale(scaleWidth, scaleHeight);

// rotate the Bitmap

int degree=0;

Bitmap resizedBitmap=null;

int data[];

int buf;

switch(trans)

{

case ROTATE_HOR:

//创建镜像翻转

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交换数据

for(int i=0;ifor(int j=0;j{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[img.getWidth()*(i+1)-(j+1)];

data[img.getWidth()*(i+1)-(j+1)]=buf;

}

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

return resizedBitmap;

case ROTATE_VER:

//创建镜像翻转

data=new int [img.getWidth()*img.getHeight()];

img.getPixels(data, 0, img.getWidth(), 0, 0, img.getWidth(),img.getHeight());

//交换数据

for(int i=0;ifor(int j=0;j{

buf=data[i*img.getWidth()+j];

data[i*img.getWidth()+j]=data[(img.getHeight()-i-1)*img.getWidth()+j];

data[(img.getHeight()-i-1)*img.getWidth()+j]=buf;

}

resizedBitmap=Bitmap.createBitmap(data, img.getWidth(),

img.getHeight(), Bitmap.Config.ARGB_4444);;

return resizedBitmap;

case ROTATE_90:

matrix.postRotate(90);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_180:

matrix.postRotate(180);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

case ROTATE_270:

matrix.postRotate(270);

// recreate the new Bitmap

resizedBitmap = Bitmap.createBitmap(img, 0, 0,

width, height, matrix, true);

return resizedBitmap;

}

return resizedBitmap;

}

catch (Exception e)

{

return null;

}

}

13 drawRect

J2me:

Android:

public void drawRect(float left, float top, float right, float bottom,Paint paint)

14 声音处理

J2me:

Android:

创建:

MediaPlayer coverSound =MediaPlayer.create(Activity,R.raw.back);

coverSound.prepare();

播放:

coverSound.start();

暂停:

coverSound.pause();

声音设置:

AudioManager vc = (AudioManager)Activity.getSystemService(Context.AUDIO_SERVICE);

vc.adjustVolume(AudioManager.ADJUST_LOWER, 1);

关闭:

coverSound.stop();

coverSound.release();

15 中断处理

J2me:

Android:

public void onWindowFocusChanged(boolean visibility)

16 填充屏幕

J2me:

Android:

CanvasInstance.drawColor(int color)

l7 按键处理

J2me:

Android:

要使按键可以被响应,需要在构造函数中调用

this.setFocusable(true);

处理方法:

public boolean onKeyDown(int keyCode, KeyEvent msg)

public boolean onKeyUp(int keyCode, KeyEvent msg)

18 触摸屏处理

J2me:

Android:

public boolean onTouchEvent(MotionEvent me)

{

if(me.getAction()=

=MotionEvent.ACTION_DOWN)

。。。

else if(me.getAction()==MotionEvent.ACTION_UP)

。。。

return true;

}

19 资源文件的的存放位置及读取

J2me:

Android:

图片:

Res\\drawable:

声音:

Res\

aw

数据:

Asserts

InputStream is=ActivityInstance.getAssets().open(path + ".dat");

20 屏幕刷新,

J2me:

repaint()

Android:

postInvalidate();

21 颜色的使用

J2me:

Android:

PaintInstance.setColor(0xAARRGGBB);

22 数据保存和读取

J2me:

Android:

保存:

SharedPreferences settings = ActivityInstance.getSharedPreferences(String name,int mode);

SharedPreferences.Editor editor = settings.edit();

editor.putBoolean("hasRec

文档

如何把J2ME游戏移植到Android平台

1.平台比较J2me:开发平台Android:操作系统2.工程结构比较(源代码,资源文件夹,图片,数据)J2me:Res:资源文件Src:源代码Android:Src:源代码Res\\drawable:图片Res\aw:声音Res\\values:字符串Assets:数据文件3.安装包比较J2me:Jad,jarAndroid:apk4.代码结构比较J2me:MIDlet,CanvasAndroid:Activity,View都采用继承的方式,都只有一个MIDlet/Activity,一般都只
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top