zoukankan      html  css  js  c++  java
  • 项目实战之天天酷跑(三):缓冲加载游戏界面

    本文摘自:https://blog.csdn.net/qq_45909299/article/details/109808495

    项目源码及相关图片资源,已上传至GitHub:https://github.com/HueyM/Projects

    前文,我们完成了开始游戏界面的搭建。本文将实现缓冲加载界面的搭建。并搭建与前面俩界面间的桥梁。
    实现输入正确用户名密码后,进入开始游戏界面,点击开始游戏按钮后,进入缓冲加载界面的功能。

    界面示意图:

    在这里插入图片描述

    具体要求:

    • 缓存加载界面:背景图片、进度条
    • 动态加载过程。(线程)
    我们想要实现动态的缓冲加载过程,让进度条动起来,就需要引入线程的概念了。

    线程:

    Thread类中这样定义:

    线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。

    举个例子,你用百度网盘下载一部电影,这就是一个线程。而如果你同时下载多部电影,这就是多线程了。

    1.线程有6种状态:新建,运行,阻塞,等待,计时等待和终止。

    新建:当使用new操作符创建新线程时,线程处于“新建”状态。
    运行(可运行):调用start()方法。

    阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。
    等待:当线程等待其他线程通知调度表可以运行时。
    计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。
    终止:当run()方法运行完毕或出现异常时。

    2.创建线程的两种方式:

    1、实现Runnable
    2、实现Thread类

    直接上代码:

    package cn.sqc.runday.controller;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JProgressBar;
    
    /**
     * 
     * @author Huey
     * @date 2020-11-18
     * 缓存加载界面:背景图片、进度条
     * 动态加载过程。(线程)
     * 
     */
    public class WindowFrame extends JFrame implements Runnable{
        JLabel background;
        //进度条
        JProgressBar jdt;
        
        //创建一个线程并启动
        public void Start(){
            WindowFrame frame = new WindowFrame();
            Thread t = new Thread(frame);//t代表线程
            //启动线程
            t.start();
            dispose();
        }
        
        
        public WindowFrame() {
            background = new JLabel(new ImageIcon("Image/hbg.jpg"));
            this.add(BorderLayout.NORTH,background);//放在窗口上面
            
            jdt = new JProgressBar();
            jdt.setStringPainted(true);//加载以字符串形式呈现出来。0%
            jdt.setBackground(Color.ORANGE);
            this.add(BorderLayout.SOUTH,jdt);
            
            //大小 568 * 340
            this.setSize(568,340);
            this.setLocationRelativeTo(null);
            this.setDefaultCloseOperation(3);
            this.setUndecorated(true);
            this.setIconImage(new ImageIcon("Image/115.png").getImage());    
            this.setVisible(true);    
        }
        
        
        public static void main(String[] args) {
            new WindowFrame().Start();
        }
        
    
        @Override
        public void run() {
            //启动线程后,线程具体执行的内容
            int [] values = {0,1,3,10,23,32,40,47,55,66,76,86,89,95,99,99,99,100};
            for(int i=0; i<values.length; i++){//循环遍历赋值
                jdt.setValue(values[i]);
                //线程休眠
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }//200毫秒
            }
        }
        
    }
    View Code

    加载界面代码敲完,现在开始造桥。
    在这里插入图片描述
    现在,我们从第一个登录界面开始测试。

    在这里插入图片描述
    点击开始游戏:
    在这里插入图片描述
    非静止画面……

    在这里插入图片描述

    在这里插入图片描述
    成功实现!

    I have a dream : Sandy beach B-J-N.
  • 相关阅读:
    GNU make manual 翻译(九十九)
    GNU make manual 翻译( 九十五)
    Shell的 for 循环小例子
    makefile中对目录遍历的小例子
    GNU make manual 翻译(九十三)
    GNU make manual 翻译( 一百)
    GNU make manual 翻译( 九十七)
    GNU make manual 翻译( 九十八)
    mapserver4.8.3 的readme.win32的中文翻译文件
    遥控器编程
  • 原文地址:https://www.cnblogs.com/mjtabu/p/14380805.html
Copyright © 2011-2022 走看看