zoukankan
html css js c++ java
在手机上动起来的文字
主程序:
/**/
/*
* GameMIDlet.java
*
* Created on 2006年4月28日, 下午9:31
*/
import
javax.microedition.midlet.MIDlet;
import
javax.microedition.lcdui.
*
;
import
javax.microedition.lcdui.Display;
import
javax.microedition.midlet.MIDletStateChangeException;
/** */
/**
*
*
@author
hero
*
@version
*/
public
class
GameMIDlet
extends
MIDlet
{
static
GameMIDlet instance;
static
Display display;
private
GameScreen gameScreen;
public
GameMIDlet()
{
instance
=
this
;
gameScreen
=
new
GameScreen(
false
);
//
产生实例
display
=
Display.getDisplay(
this
);
}
protected
void
startApp()
throws
MIDletStateChangeException
{
gameScreen.start();
//
启动线程,不知道什么原因,在这一句出现stop的现象,有可能是自己用F5时,设置了断点
display.setCurrent(gameScreen);
}
protected
void
pauseApp()
{
gameScreen.stop();
}
public
void
destroyApp(
boolean
flag)
throws
MIDletStateChangeException
{
gameScreen.stop();
}
}
次程序:
/**/
/*
* GameScreen.java
*
* Created on 2006年4月28日, 下午10:22
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
import
javax.microedition.lcdui.
*
;
import
javax.microedition.lcdui.game.
*
;
import
java.util.Random;
/** */
/**
*
*
@author
hero
*/
final
class
GameScreen
extends
GameCanvas
implements
Runnable
{
/** */
/**
Creates a new instance of GameScreen
*/
private
Graphics graphics;
//
保存图形环境实例
private
boolean
runningFlag
=
false
;
//
线程运行标志
private
static
final
long
TIME_PER_FRAME
=
100
;
//
每一帧的周期
private
int
width;
//
屏幕宽度
private
int
height;
//
屏幕高度
private
Random random
=
new
Random();
//
设置一个随机数;
public
static
final
int
BLUE
=
0x000000ff
;
private
int
x,y,vx,vy;
String str
=
"
J2ME游戏世界
"
;
public
GameScreen(
boolean
flag)
{
super
(flag);
graphics
=
getGraphics();
//
取得图形环境实例
width
=
getWidth();
height
=
getHeight();
init();
}
void
init()
{
x
=
width
/
2
;
y
=
height
/
2
;
vx
=
random.nextInt(
2
)
+
1
;
//
nextInt(int i)定义在cldc 1.1中
vy
=
random.nextInt(
2
)
+
1
;
}
private
void
input()
{
}
private
void
logic()
{
x
+=
vx;
y
+=
vy;
Font font
=
graphics.getFont();
if
(x
<=
0
||
x
+
font.stringWidth(str)
>=
width)
{
vx
=-
vx;
}
if
(y
<=
0
||
y
+
20
>=
height)
{
vy
=-
vy;
}
}
private
void
render(Graphics g)
{
g.setColor(BLUE);
g.fillRect(
0
,
0
, width, height);
g.setColor(
0x00ffffff
);
g.drawString(str,x,y,Graphics.LEFT
|
Graphics.TOP);
}
public
synchronized
void
start()
{
if
(
!
runningFlag)
{
runningFlag
=
true
;
Thread th
=
new
Thread(
this
);
//
启动线程
th.start();
}
}
public
synchronized
void
stop()
{
runningFlag
=
false
;
}
public
void
run()
{
while
(runningFlag)
{
long
startTime
=
System.currentTimeMillis();
input();
logic();
render(graphics);
flushGraphics();
long
elapsedTime
=
System.currentTimeMillis()
-
startTime;
if
(elapsedTime
<
TIME_PER_FRAME)
{
try
{
Thread.sleep(TIME_PER_FRAME
-
elapsedTime);
}
catch
(InterruptedException ex)
{
}
}
}
}
}
查看全文
相关阅读:
模块
time/datetime/random/string/os/sys/shutil/zipfile/tarfile
模块
模块
模块
2.1
1.4
生成器 迭代器
闭包 装饰器
函数
原文地址:https://www.cnblogs.com/Dreamfly/p/388479.html
最新文章
$(document).ready()即$()方法和window.onload方法的比较
jquery中的事件与动画
java入门基础知识点总结
Java中的Set集合接口实现插入对象不重复的原理
java中set接口的用法
Java final static abstract关键字介绍
Java中Vector和ArrayList的区别
Java的集合框架
Java中处理异常throw和throws
navigate连接MySQL报错:navigate your password has expired to log in your must change it using a client that supports
热门文章
终端可以连接MySQL但是navicat还是报错:Can't connect to MySQL server on '127.0.0.1'(61)
this action could not be completed.try again登陆appstore错误提示
Mysql修改root用户密码 For Mac 报错:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
MAC下Eclipse的常用快捷键
生命周期各方法及对比
github图片
23种设计模式简介
猿题库 iOS 客户端架构设计
KVC、KVO、NSNotification、delegate 总结及区别
模块
Copyright © 2011-2022 走看看