`
izuoyan
  • 浏览: 9216284 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个圣诞动画的实现

阅读更多

图片加载类:

import javax.microedition.lcdui.*;

public class ImageAccess {
Image bg = null;
Image merry = null;
Image logo = null;
Image control = null;
Image context = null;

public ImageAccess() {
try{
bg = Image.createImage("/bg.png");
merry = Image.createImage("/merry.png");
logo = Image.createImage("/logo.png");
control = Image.createImage("/control.png");
context = Image.createImage("/context.png");
}catch(java.io.IOException e){
e.printStackTrace();
}
}
}
地图数据类:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class MerryData {
private int lay = 3;
private int position = 1;
// y,ix,iy,w,h
// 四个下标为图片的位移和宽度(ix,iy,w,h)
public int[][] layout = new int[][]{{0,0,24,38},{24,0,46,38},{70,0,16,18}};
public int[][] contet = new int[][]{{0,0,59,25},{59,0,59,25},{0,25,59,15},{60,25,59,25}};
// 三个下标为当前的图片和它的坐标
public int[][] bulet = new int[][]{{0,8,83},{2,81,100},{0,150,80},{1,215,86},{0,295,84},{1,210,85},{1,350,86},{0,410,87},{2,500,90}};
public int[][] jokul = new int[][]{{0,85,10,10,0},{58,88,55,50,1},{114,85,30,30,0},{170,85,5,30,0},{223,87,65,30,0},{280,87,65,30,0},{335,87,65,30,0},{390,87,65,30,0},{450,87,65,30,0},{500,87,65,30,0}};

public MerryData() {
}

public void move() {
for(int i = 0; i < bulet.length; i ++) {
bulet[i][1]--;
}
for(int i = 0; i < jokul.length; i ++) {
jokul[i][0]--;
}
}
}

第一个Canvas类:

import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class GscreenBuffer extends Canvas implements Runnable {
private int screenw = 128,screenh = 128;
private boolean logoover=false;
private Image off_screen_buffer;
private Graphics off_screen;
private boolean visible = false;
public ImageAccess ia;
public MerryData data;
Thread thread = new Thread(this);

public GscreenBuffer() {
off_screen_buffer = Image.createImage(screenw,screenh);
off_screen = off_screen_buffer.getGraphics();
init();
}

protected void init() {
ia = new ImageAccess();
data = new MerryData();
}

public void run() {
while(true) {
data.move();
try {
repaint();
thread.sleep(300);
}catch(InterruptedException e) {}
}
}

public void paint(Graphics g) {
drawMapLayout();
// 障碍物
for(int i = 0; i < data.bulet.length; i ++) {
drawLayout(i);
}

off_screen.setColor(0,0,0);
off_screen.drawRect(0,0,126,126);
g.drawImage(off_screen_buffer, 0, 0, 20);

}

private void drawImg(Graphics g ,Image allimg,int ix,int iy,int bx,int by ,int width,int height,int gra){
g.setClip(ix,iy,width,height);
g.drawImage(allimg,ix-bx,iy-by,g.LEFT|gra);
g.setClip(0,0,128,128);
}

protected void drawMapLayout() {
off_screen.drawImage(ia.bg,0,0,20);
// 雪山
for(int i = 0; i < data.jokul.length; i ++) {
drawJokul(i);
}
}

private void drawLayout(int x) {
drawImg(off_screen,ia.control,data.bulet[x][1],data.bulet[x][2],data.layout[data.bulet[x][0]][0],data.layout[data.bulet[x][0]][1],data.layout[data.bulet[x][0]][2],data.layout[data.bulet[x][0]][3],20);
}

protected void drawJokul(int x) {
drawImg(off_screen,ia.context,data.jokul[x][0],data.jokul[x][1],data.contet[x%2][0],data.contet[x%2][1],data.contet[x%2][2],data.contet[x%2][3],20);
drawImg(off_screen,ia.context,data.jokul[x][0],3,data.contet[3][0],data.contet[3][1],data.contet[3][2],data.contet[3][3],20);
drawImg(off_screen,ia.context,data.jokul[x][0],40,data.contet[3][0],data.contet[3][1],data.contet[3][2],data.contet[3][3],20);
drawImg(off_screen,ia.context,data.jokul[x][0],data.jokul[x][1]+15,data.contet[2][0],data.contet[2][1],data.contet[2][2],data.contet[2][3],20);
}
}

第二个Canvas类:

import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;

public class GameStart extends Canvas implements Runnable {
GscreenBuffer buffer= new GscreenBuffer(); //这里把第一个Canvas类加进来,从而在同一个线程里运行
int executenumber=0;
MerryXmas merry= null;
Thread thread = new Thread(this);
long starttime = System.currentTimeMillis();
boolean logoover=false;

public GameStart(MerryXmas merry) {
this.merry=merry;
}

public void run(){
while(System.currentTimeMillis()-starttime<2000){
this.repaint();
try{
thread.sleep(30L);
}catch(Exception e){
e.printStackTrace();
}
}
logoover=true;
this.repaint();
}

public void paint(Graphics g){
if(this.logoover==true){
g.drawImage(buffer.ia.merry,0,0,20);
//gr.aa.logo=null;
System.gc();
}else {
g.setColor(255,255,255);
g.fillRect(0,0,128,128);
g.drawImage(buffer.ia.logo,20,40,20);

}
}
public void keyPressed(int keyCode){
buffer.thread.start();
Display.getDisplay(merry).setCurrent(buffer);
}
}

主类MIDlet:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class MerryXmas extends MIDlet {
private static MerryXmas Xmas;
GameStart gs= new GameStart(this);

public MerryXmas() {
Xmas = this;
}

public static MerryXmas getmidlet(){
if(Xmas != null) {
return Xmas;
}
return null;
}

public void startApp() {
gs.thread.start();
Display.getDisplay(this).setCurrent(gs);
}

public void pauseApp() {}
public void destroyApp(boolean unconditional) {}

public static void quitApp() {
Xmas.destroyApp(true);
Xmas.notifyDestroyed();
Xmas = null;
}
}

分享到:
评论

相关推荐

    H5实现的卡通圣诞老人动画

    在本文中,我们将深入探讨如何使用HTML5、CSS3以及JavaScript技术来实现一个生动有趣的卡通圣诞老人动画。这个动画可以作为一个独特的圣诞礼物,为节日增添欢乐气氛。让我们一起探索其中的技术细节。 首先,HTML5是...

    jQuery/HTML5圣诞节动画 雪花飞舞效果

    今天我们来分享一款基于jQuery和HTML5的圣诞节动画特效,应该说这款动画主要是由jQuery制作完成,中间利用了一些CSS3和HTML5的相关特性,来完成了圣诞夜雪花飞舞的动画效果。虽然今年的圣诞节还早,但你可以把这款...

    HTML5实现圣诞雪人动画代码.zip

    在这个"HTML5实现圣诞雪人动画代码"项目中,开发者利用HTML5的一些核心特性,创建了一个富有节日氛围的互动动画,下面将详细解析这个项目的知识点。 首先,HTML5的`&lt;canvas&gt;`元素是实现动画的基础。Canvas提供了一...

    圣诞桌面动画,圣诞桌面动画

    这种动画能够将用户的电脑桌面转化为一个充满圣诞元素的动态场景,如飘落的雪花、旋转的圣诞树、闪烁的灯光、欢歌笑语的圣诞老人等,为用户带来节日的喜悦和温馨感。 制作圣诞桌面动画的技术基础是图形用户界面...

    openGL圣诞场景动画

    在本案例中,开发者运用OpenGL的技术手段构建了一个具有圣诞主题的美丽场景。 圣诞场景动画可能包含以下几个关键知识点: 1. **OpenGL基础知识**:OpenGL 是一种基于顶点和图元的渲染模型,它提供了一系列的函数来...

    HTML5卡通圣诞节圣诞老人动画.zip

    这个"HTML5卡通圣诞节圣诞老人动画.zip"压缩包包含了一个利用HTML5技术和SVG(Scalable Vector Graphics)创建的动画,适用于圣诞节主题的网页背景或装饰。 SVG是一种矢量图形格式,它允许在网页上创建清晰、可缩放...

    圣诞树源码-纯CSS制作螺旋圣诞树动画源码下载

    本文将详细讲解如何使用纯CSS技术来创建一个螺旋圣诞树动画。这个动画源码是一个精美的节日装饰,完全由CSS代码构建,无需额外的HTML5或者其他编程语言支持。通过理解和学习这个源码,你可以深入了解CSS的动画效果...

    创造节日气氛:在Python中实现圣诞树的3D旋转动画

    通过上述步骤,我们已经使用Python和vtk库创建了一个动态的3D圣诞树模型,并实现了旋转动画。我们从基本的3D建模开始,逐步添加了枝叶细节、装饰物、灯光效果和动画效果。这个项目不仅展示了vtk库的强大功能,也提供...

    jQuery圣诞下雪动画.zip

    jQuery的`.animate()`方法是实现动画的核心,它可以平滑地改变一个或多个CSS属性,从而创建动态效果。 1. **创建HTML结构**: 在HTML文档中,我们需要一个canvas元素作为雪花飘落的画布。Canvas是HTML5提供的一个...

    Flash圣诞节圣诞贺卡动画及背景素材.rar

    《Flash圣诞节圣诞贺卡动画及背景素材》是一个包含多种元素的资源集合,主要适用于创作具有浓厚节日氛围的Flash动画作品。这个压缩包中包含了丰富的素材,如圣诞贺卡动画、背景音乐、马车奔跑的动画效果、雪花飘落...

    实现前端简单动态圣诞树动画

    在本文中,我们将深入探讨如何使用前端技术,包括HTML、CSS和JavaScript,来实现一个简单的动态圣诞树动画。这个动画不仅包含视觉上的效果,还配有详细的注释,以帮助开发者理解每一部分的功能。 首先,HTML...

    圣诞节圣诞树动画特效源码

    【标题】"圣诞节圣诞树动画特效源码"揭示了这个压缩包内容的核心——它包含了一组用于创建圣诞节主题动画特效的源代码,特别是与圣诞树相关的视觉效果。这些特效是为前端Web开发设计的,意味着它们将在网页浏览器上...

    css3绘制的卡通彩色圣诞树旋转动画特效

    在这个案例中,我们看到一个利用CSS3关键帧动画实现的卡通彩色圣诞树旋转动画特效。下面将详细讲解这个特效背后的技术细节。 首先,`keyframes`是CSS3中定义动画过程的关键部分。通过定义动画在不同时间点的状态,...

    HTMl5实现的圣诞树源码

    在这个"HTMl5实现的圣诞树源码"项目中,我们看到了HTML5如何被用来创造一个充满节日氛围的卡通圣诞树。 首先,HTML5的Canvas元素扮演了关键角色。Canvas是一个基于矢量图形的画布,通过JavaScript进行绘制,可以...

    圣诞节堆雪人动画flash源文件素材.rar

    在这个“堆雪人”动画中,开发者可能使用了Flash的时间轴来安排各个帧的顺序,通过关键帧和补间动画实现了雪人动作的平滑过渡,例如雪人堆砌的过程、头部摇摆等动态效果。 其次,ActionScript是Flash中的编程语言,...

    圣诞节雪花飘落圣诞老人背景canvas动画.zip

    在本项目中,"圣诞节雪花飘落圣诞老人背景canvas动画.zip"是一个包含JavaScript特效的压缩文件,主要用于创建一个富有节日气氛的互动背景。这个动画设计适用于手机移动端,为圣诞节活动增添欢乐元素。以下是对该技术...

    html实现圣诞树代码

    【HTML 实现圣诞树代码】 在HTML编程中,创建一个动态的圣诞树可以作为...在这个例子中,通过结合三者,可以创建一个充满节日气氛的交互式圣诞树页面。然而,实际的圣诞树代码并未在此给出,需要进一步的开发和实现。

    网页模板——纯CSS3实现圣诞老人的驯鹿动画效果源码.zip

    在这个案例中,我们聚焦于如何用CSS3来构建一个生动活泼的圣诞主题场景,特别是关于驯鹿的动画效果。以下是关于这个主题的详细知识讲解: 1. **CSS3介绍**:CSS3是层叠样式表(Cascading Style Sheets)的第三版,...

    CSS3实现圣诞雪人动画特效代码.zip

    【CSS3实现圣诞雪人动画特效代码】是一个利用现代网页技术——CSS3,来创造一个互动的、富有节日气氛的圣诞雪人动画效果的实例。这个特效不仅展示了CSS3的强大功能,也为网页增添了一份生动与趣味,是网页设计者在...

Global site tag (gtag.js) - Google Analytics