import java.io.InputStream;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
public class TestCanvas extends Canvas implements Runnable {
private Image image;
/**当前通过上下左右按键选择的序列 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2 */
int ndx = 0;
/**百分比,用于播放进度条*/
private int percent = 0;
/**我们的播放器对象*/
private Player midiPlayer;
/**当前时间,用于保存 暂停时,已经播放了多长时间,以便于继续接着放*/
long currentTime=0;
/**总时间,用来更好的计算进度条的速度*/
private long duration = 0;
/**如果是暂停,那么停止播放,如果是继续,那么要接着放,这个过程,我们就可以使用currentTread来判断*/
private Thread currentThread = null;
/**停止,暂停标识,默认为false*/
private boolean stop = false;
protected void paint(Graphics g) {
g.setColor(255,255,255);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
/////////////////树,参考以前的程序而来的////////////////////////////////////////////////////////
try{
image = Image.createImage("/tree.png");
}catch(java.io.IOException e){
System.out.println(e.getMessage());
}
int[] argb=new int[image.getWidth()*image.getHeight()];
//从图片的指定区域读取ARGB像素值,并存储到rgbData数组中,rgbData中的数据以OXAARRGGBB格式存储。
image.getRGB(argb,0,image.getWidth(),0,0,image.getWidth(),image.getHeight());
//经过上一句的执行,产生了什么效果,argb变成了一个图片数组
//给上面的图片数组中每个像素点设置透明效果
for(int i=0;i<argb.length;i++){
argb[i]&=0x50ffffff;
}//经过for循环,此时图片数组就具备半透明的效果,因为还没有使用画笔,所以暂时不显示处理
//使用图片数组创建一个图片对象,经过下面这句,此时,图片已经生成了
Image clarity_image = Image.createRGBImage(argb,image.getWidth(),image.getHeight(),true);
//将创建好的图片,绘制到屏幕的指定区域,并且指定了对齐方式
g.drawImage(clarity_image,getWidth()/2,getHeight()/2,g.VCENTER|g.HCENTER);
////////////////////////////////////////////////////////////////////////////
//24 为方框之间的缝隙,30为按钮的宽度,260为绘制时y轴的高度,1为边框,22为红框的高度
//20为按钮的高度,80为绘制时x的起点坐标
g.setColor(255,0,0);
if (ndx >= 0) {
int x = 80 + ndx * (30+24);
g.setColor(0xFF0000);
g.drawRect(80+ndx*(30+24)-1, 260-1, 32, 22);
}
g.setColor(123);
g.drawRect(80, 260, 30, 20);
int w= Font.getDefaultFont().stringWidth("开始");
int h= Font.getDefaultFont().getHeight();
g.drawString("开始", 80+w/2, 260+h, Graphics.HCENTER|Graphics.BOTTOM);
g.setColor(0xFFFFFF);
g.drawRect(80+(30+24), 260, 30, 20);
g.setColor(123);
g.drawString("暂停", 80+(30+24+10), 260+h, Graphics.HCENTER|Graphics.BOTTOM);
g.drawRect(80+(30+24)*2, 260, 30,20);
//进度条
g.setColor(50);
g.drawRect(100, 260-20, 100,10);
g.setColor(100,100,100);
g.fillRect(100+1,260-19,percent,8);
}
protected void keyPressed(int key) {
int action = getGameAction(key);
int dir = 0;
switch (action) {
case RIGHT: dir += 1; break;
case LEFT: dir -= 1; break;
case UP: ndx -= 1; break;
case DOWN: ndx += 1; break;
case FIRE:
System.out.println("您点击了确认键"+ndx);
if(ndx==0)startPlayer();
if(ndx==1) pausePlayer();
if(ndx==2) playerList();
break;
default:
return;
}
if (ndx < 0) ndx = 2;
if (ndx > 2) ndx = 0;
repaint();
}
//启动player
public void startPlayer(){
//在开始播放的时候启动这个线程
if(currentThread == null){
stop = false;
currentThread = new Thread(this);
currentThread.start();
}else if(midiPlayer != null){
try {
midiPlayer.start();
} catch (MediaException ex) {
ex.printStackTrace();
}
}
}
//创建MIDI播放器,作为背景音乐播放器
public void createPlayer(){
try{
InputStream is=getClass().getResourceAsStream("/wjn.mid");
midiPlayer =Manager.createPlayer(is,"audio/midi");
midiPlayer.realize();
midiPlayer.setLoopCount(-1);
midiPlayer.setMediaTime(currentTime);
//midiPlayer.start();
}catch(Exception e){
e.printStackTrace();
}
}
//停止播放器
public void stopPlayer(){
try {
currentThread = null;
stop = true;
Thread.sleep(100);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
if(midiPlayer != null){
midiPlayer.close();
midiPlayer = null;
}
}
public void pausePlayer(){
if(midiPlayer != null){
currentTime=midiPlayer.getMediaTime();
try{
midiPlayer.stop();
}catch(MediaException ex){
ex.printStackTrace();
}
}
}
//返回列表
public void playerList(){
}
/**在线程中,
* 1 首先当palyer为空的时候,创建它createPlayer
* 2 初始化这个palyer对象 realize()
* 3 启动start
*
* */
public void run() {
try{
if(midiPlayer == null){
createPlayer();
}
midiPlayer.realize();
duration = midiPlayer.getDuration();
midiPlayer.prefetch();
midiPlayer.start();
while(!stop){//stop没有停止
try{//获得当前播放事件
long t = midiPlayer.getMediaTime();
percent = (int)((100*t)/duration);
Thread.sleep(100);
repaint();
}catch(InterruptedException ex){
}
}
}catch(MediaException ex){
ex.printStackTrace();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
mmapi.rar (58个子文件)
mmapi
.project 672B
bin
TestMIDlet.class 849B
mouse.wav 233KB
DemoMILet.class 4KB
4.lrc 2KB
1.lrc 1KB
images.png 4KB
test.mpg 690KB
tree.png 23KB
Blast.wav 10KB
com
BallCanvas.class 3KB
3.lrc 1KB
BallMidlet.class 2KB
坐上火车去拉萨.lrc 1KB
2.lrc 1KB
TestCanvas.class 5KB
wjn.mid 28KB
lrc
MIDlet1.class 989B
geciOne.class 2KB
Displayable1.class 4KB
bark.wav 2KB
moon.mpg 115KB
.settings
org.eclipse.jdt.core.prefs 30KB
.mtj 2KB
Application Descriptor 255B
src
DemoMILet.java 3KB
TestCanvas.java 6KB
BallCanvas.java 3KB
com
TestMIDlet.java 613B
BallMidlet.java 2KB
lrc
MIDlet1.java 717B
geciOne.java 2KB
Displayable1.java 4KB
.mtj.tmp
emulation
mmapi.jar 1.03MB
mmapi.jad 281B
verified
libs
classes
TestMIDlet.class 849B
DemoMILet.class 4KB
com
BallCanvas.class 4KB
BallMidlet.class 2KB
TestCanvas.class 5KB
lrc
MIDlet1.class 981B
geciOne.class 2KB
Displayable1.class 4KB
res
mouse.wav 233KB
4.lrc 2KB
1.lrc 1KB
images.png 4KB
test.mpg 690KB
tree.png 23KB
Blast.wav 10KB
3.lrc 1KB
坐上火车去拉萨.lrc 1KB
2.lrc 1KB
wjn.mid 28KB
bark.wav 2KB
moon.mpg 115KB
.classpath 328B
build.properties 484B
共 58 条
- 1
资源评论
- 2岁小朋友2015-01-07很有帮助,谢谢
- nos198809182011-09-29因为项目需要这种效果,所以下载了,很有帮助,谢谢
- mophon2012-11-30工程完整,有帮助,支持一下。
- 冰点阳光的小屋2012-12-06对于学习很有帮助,谢谢
wlspider
- 粉丝: 0
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 什么是移动应用开发-关于移动应用开发的相关介绍
- 第二组汇报 PPT.pptx
- 什么是大数据开发-相关介绍-关于大数据开发的相关介绍
- 什么是软件测试-相关介绍-关于软件测试的相关介绍
- 前端开发-什么是前端开发-关于前端开发的一些相关介绍
- Sora AI-关于文生视频的使用场景说明
- suno AI文生视频的相关教程和介绍使用
- 什么是后端开发-关于后端开发的一些小介绍分享
- Jurassic Pack Vol. II Dinosaurs 侏罗纪包卷恐龙二号Unity游戏模型资源unitypackage
- Jurassic Pack Vol. III Dinosaurs 侏罗纪包卷恐龙三号Unity游戏模型资源unitypackag
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功