WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章J2ME技术进阶教程扫描屏幕和颜色渐变的效果

扫描屏幕和颜色渐变的效果
作者:J2MEDEV  来源:J2MEDEV  发布时间:2006-7-25 9:09:29

本例提供一个扫描屏幕的效果展示,其中扫描区域实现了基本的颜色渐变效果。除此之外,程序还包括了GameCanvas和线程的基本适用方法,以及Graphics的绘图操作。

/*
 * SweepGame.java
 *
 * Created on 2005年12月2日, 下午1:25
 */

package com.j2medev.sweep;

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

public class SweepGame extends MIDlet {


    public void startApp() {
        final SweepGameCanvas sweeper = new SweepGameCanvas();
        sweeper.start();
        sweeper.addCommand(new Command("退出", Command.EXIT, 0));
        sweeper.setCommandListener(new CommandListener() {
            public void commandAction(Command c, Displayable s) {
                sweeper.stop();
                notifyDestroyed();
            }
        });
        Display.getDisplay(this).setCurrent(sweeper);
    }
    public void pauseApp() {}
   
    public void destroyApp(boolean unconditional) {}
}

class SweepGameCanvas extends GameCanvas implements Runnable {
    private boolean mTrucking;
    private int mTheta;
    private int mBorder;
    private int mDelay;
    public SweepGameCanvas() {
        super(true);
        mTheta = 0;
        mBorder = 10;
        mDelay = 50;
    }
    public void start() {
        mTrucking = true;
        Thread t = new Thread(this);t.start();
    }
    public void stop() {
        mTrucking = false;
    }
    public void render(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        // Clear the Canvas.
        g.setGrayScale(255);
        g.fillRect(0, 0, width - 1, height - 1);
        int x = mBorder;
        int y = mBorder;
        int w = width - mBorder * 2;
        int h = height - mBorder * 2;
        for (int i = 0; i < 8; i++) {
            g.setGrayScale((8 - i) * 32 - 16);
            g.fillArc(x, y, w, h, mTheta + i * 10, 10);
            g.fillArc(x, y, w, h, (mTheta + 180) % 360 + i * 10, 10);
        }
    }
    public void run() {
        Graphics g = getGraphics();
        while (mTrucking) {
            mTheta = (mTheta + 1) % 360;
            render(g);
            flushGraphics();
            try { Thread.sleep(mDelay); } catch (InterruptedException ie) {}
        }
    }
}

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码