线程动画:
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class c extends MIDlet {
MyCanvas mycanvas;
Display display;
public c()
{
mycanvas=new MyCanvas();
display=Display.getDisplay(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
display.setCurrent(mycanvas);
}
}
class MyCanvas extends Canvas implements Runnable
{
int w,h;
Image img;
int index;
MyCanvas()
{
w=this.getWidth();
h=this.getHeight();
try{
img=Image.createImage("/moon.png");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
new Thread(this).start();
}
protected void paint(Graphics g) {
// TODO Auto-generated method stub
g.setColor(0xffffff);
g.fillRect(0, 0, w, h);
drawClipImag(g,img,40,40,index++%8*60,0,60,50);
}
//在屏幕上显示画帧,x,y为图像在屏幕的位置,mx,my为小图在大图位置,mw,mh为小图尺寸
public void drawClipImag(Graphics g,Image img,int x,int y,int mx,int my,int mw,int mh)
{
g.setClip(x, y, mw, mh);
g.drawImage(img, x-mx, y-my, 0);
}
public void run() {
// TODO Auto-generated method stub
while(true)
{
try{
Thread.sleep(150);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
repaint();
serviceRepaints();
}
}
}
rms:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.rms.RecordStore;
public class Rms extends MIDlet {
String name="jack";
int score=80;
public Rms()
{
initRMS();
}
//增加数据
public void initRMS()
{
try {
RecordStore rs=RecordStore.openRecordStore("testRMS", true);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
DataOutputStream os=new DataOutputStream(baos);
os.writeUTF(name);
os.writeInt(score);
os.close();
byte[] data=baos.toByteArray();
rs.addRecord(data, 0, data.length);
System.out.println("Ok~");
rs.closeRecordStore();
baos.close();
os.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
//获得数据
public void loadRMS(int ID)
{
try{
RecordStore rs=RecordStore.openRecordStore("testRMS", true);
byte[] buf=rs.getRecord(ID);
//删除记录
//rs.deleteRecord(ID);
ByteArrayInputStream bis=new ByteArrayInputStream(buf);
DataInputStream dis=new DataInputStream(bis);
dis.readUTF();
dis.readInt();
rs.closeRecordStore();
dis.close();
bis.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public void saveRms() {
try{
RecordStore rs=RecordStore.openRecordStore("testRMS", true);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
DataOutputStream dos=new DataOutputStream(bos);
dos.writeUTF("NewName");
dos.writeInt(100);
byte[] temp=bos.toByteArray();
dos.flush();
bos.reset();
rs.setRecord(1, temp, 0, temp.length);
rs.closeRecordStore();
bos.close();
dos.close();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
}
分享到:
相关推荐
6. **多媒体支持**:J2ME的MIDP包含了一些用于处理音频、图像和简单动画的API,使开发者可以创建丰富的多媒体应用。 7. **设备适配器层(Device Adaptation Layer)**:这一层是J2ME与实际硬件之间的桥梁,处理设备...
9. **线程管理**:在J2ME中,多线程用于实现并发执行,特别是在处理网络请求和动画时。源代码可能展示了如何创建和管理线程。 10. **优化技巧**:由于J2ME运行在资源有限的设备上,源代码可能包含内存管理和性能...
8. **Record Management System (RMS)**:RMS是J2ME中用于数据持久化存储的关键部分。熟练使用RecordFilter和RecordEnumeration进行操作,简化数据库交互。 9. **线程管理**:线程在J2ME开发中至关重要,特别是在...
9. Proj14_1:可能涉及到线程管理,用于创建多任务或动画效果。 10. Proj5_1:可能是一个关于游戏开发的实例,可能用到了碰撞检测或计时器。 每个项目都是J2ME学习过程中的一个里程碑,它们逐步引导开发者掌握基本...
7. **数据存储**: J2ME提供了Record Management System (RMS) 来存储应用数据,学习如何有效地使用RMS处理本地数据是必要的。 8. **游戏开发**: J2ME也可以用于开发游戏,通过Canvas类实现游戏逻辑和渲染,了解如何...
同时,J2ME应用通常使用KVM(K Virtual Machine)运行,需要注意内存管理和线程控制。 4. **MIDP组件** MIDP是J2ME中用于开发用户界面的主要框架,包含了Canvas和Form两种基本组件。Canvas允许自定义绘图,适合...
郭克华-J2ME移动开发实战教学视频() 全部课程内容: 1. 体系介绍和环境配置 2. 高级界面开发1基本界面和Command 3. 高级界面开发2Command事件和List 4. 高级界面开发3TextBox,Ticker和Alert 5. 高级界面开发4表单...
25J2ME代码优化 高级界面开发 02高级界面开发1:基本界面和Command 03高级界面开发2:Command事件和List 04高级界面开发3:TextBox,Ticker和Alert 05高级界面开发4:表单元素 06高级界面开发5:表单元素事件 07案例1 工具...
- **图形与动画**:讲解了如何使用J2ME的图像处理功能来创建高质量的图形和动画效果。 - **音频处理**:介绍了如何在游戏中集成音频元素,提升用户体验。 - **用户交互**:分析了不同类型的用户输入方式及其在游戏中...
- **J2ME网络与多线程**:讲解如何在网络连接受限的情况下进行数据传输,并实现多线程处理。 - **服务器端设计**:探讨服务器端架构的设计思路,包括数据管理和服务提供。 - **应用优化与部署**:分享如何对应用进行...
在J2ME中,可以利用Record Management System (RMS)来存储这些数据。通过编写适当的代码,开发者可以轻松地实现这一目标。 ##### 3.2 多线程与并发控制 多线程编程是在J2ME游戏中实现复杂逻辑的有效手段。然而,这...
开发者需要掌握低级绘图API(如Graphics类),理解动画原理,以及如何利用定时器和多线程来实现流畅的游戏体验。 **安全和权限管理** J2ME应用的安全模型基于 MIDlet Suite Digital Signature,确保只有经过认证的...
8. **Chapter 11(ch11):高级主题**:这可能涉及J2ME的更多高级特性,如多线程编程,以提高应用性能,或者如何优化代码以适应资源有限的移动环境。 通过这些章节的源代码,开发者可以深入理解J2ME的各个方面,并...
总结来说,这篇论文详细阐述了使用J2ME进行手机游戏开发的过程,特别是如何结合多线程和RMS实现“猜数字游戏”的各项功能。它不仅提供了一次对J2ME技术的实际应用,也为读者展示了早期移动游戏开发的一些核心概念和...
8. **线程管理**:多线程是J2ME中实现并发操作的关键,可以使用`Thread`类创建并控制线程执行。 9. **蓝牙和红外通信**:J2ME提供`InfraredDataSender`和`LocalDevice`接口,支持设备间的无线数据传输。 10. **...
总之,**精通J2ME无线编程** 教程将带领你走进移动应用开发的世界,通过深入学习J2ME,你将能够开发出能在各种移动设备上运行的应用程序,满足不同场景的需求。无论你是对移动开发感兴趣的学生,还是寻求技术提升的...
- **动画处理**:使用定时器和多线程来实现流畅的游戏动画。 - **图像资源管理**:考虑到移动设备的内存限制,合理管理和加载图片资源至关重要。 - **音效与音乐播放**:J2ME提供了一些API来处理音频播放,如MIDI和...
本资源包含了一系列J2ME的源代码示例,非常适合初学者用来学习和实践J2ME编程。 1. **J2ME基础知识** J2ME由配置(Configurations)和框架(Profiles)组成。配置定义了设备的基本硬件能力,如内存大小和处理器...