⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snow.java

📁 分享一个适用于手机上的雪花飞舞效果。还不错。
💻 JAVA
字号:
package game;

import javax.microedition.lcdui.Graphics;
import util.MathTool;
import java.util.Random;
import util.GraphicsTool;

//风的效果
//风对雪花的影响
public class Snow {

    private int iGameWidth = 0;
    private int iGameHeight = 0;
    private int iTimes = 0;
    private int winddirect = 0; //风向
    private int downspeed = 0;
    private int SnowNum = 0;
    private int[] snowX = null;
    private int[] snowY = null;
    private int[] snowR = null;
    private final int ChangeDirectTime = 500;
    private final int STARTPOSITION = -30;

    public Snow(int sw, int sh) {
        setSnowScrenn(sw, sh);
        downspeed = sh / 100;
        SnowNum = sw * sh / 256;
        snowX = new int[SnowNum];
        snowY = new int[SnowNum];
        snowR = new int[SnowNum];

        for (int i = 0; i < SnowNum; i++) {
            reset(i);
        }
    }

    public void setSnowScrenn(int sw, int sh) {
        iGameWidth = sw;
        iGameHeight = sh;
    }

    public void draw(Graphics g) {
        int clipx = g.getClipX();
        int clipy = g.getClipY();
        int clipwidth = g.getClipWidth();
        int clipheight = g.getClipHeight();

//    g.setColor(0xffffff);
        for (int i = 0; i < SnowNum; i++) {
            GraphicsTool.FillRect(g, 0xffffff, snowX[i], snowY[i], snowR[i], snowR[i]);
//      g.fillArc(snowX[i], snowY[i], snowR[i], snowR[i], 0, 360);
        }
        GraphicsTool.ClipArea(g, clipx, clipy, clipwidth, clipheight);
    }

    public void update() {
        iTimes++;

        if (iTimes % ChangeDirectTime == 0) {
            winddirect = MathTool.GetRandomNum(0, 2);
        }
        snowMove();
    }

    private void snowMove() {

        for (int i = 0; i < SnowNum; i++) {

            switch (winddirect) {
                case 0:
                    snowX[i] += MathTool.GetRandomNum(-1, 4);
                    break;
                case 1:
                    snowX[i] -= MathTool.GetRandomNum(-1, 4);
                    break;
                case 2:
                    snowX[i] -= MathTool.GetRandomNum(-2, 2);
                    break;
            }
            snowY[i] += downspeed;

            if (snowX[i] < STARTPOSITION || snowX[i] > iGameWidth + 10 ||
                    snowY[i] > iGameHeight + 5) {
                reset(i);
            }

        }
    }

    private void reset(int id) {
        snowX[id] = MathTool.GetRandomNum(STARTPOSITION, iGameWidth);
        snowY[id] = MathTool.GetRandomNum(STARTPOSITION, iGameHeight);
        snowR[id] = MathTool.GetRandomNum(1, 4);
    }

    public void destroy() {
        snowX = null;
        snowY = null;
        snowR = null;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -