横版java

阅读: 评论:0

横版java

横版java

使用java swing来模拟游戏中横版卷轴界面的效果------------------------------------------------------------------

GameRibbonPanel类

------------------------------------------------------------------

package com.qsuron;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import AffineTransform;

import java.awt.image.BufferedImage;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.JFrame;

public class GameRibbonPanel extends JFrame implements Runnable, KeyListener{

private static final long serialVersionUID = 2655407680852591409L;

public static final int WIDTH = 300;

public static final int HEIGHT = 240;

private Container contentPanel;

public Image offScreenImage = null; //缓冲图像

public Ribbon ribbon = null;

//界面初始化

private void jframeInit(){

this.setTitle("Swing 游戏学习2 - 卷轴");

this.setSize(WIDTH+200,HEIGHT+200);

this.setLocation(400,200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

contentPanel = ContentPane();

contentPanel.setLayout(null);

this.setVisible(true);

this.addKeyListener(this);

BufferedImage bim = new BufferedImage(1110,240,BufferedImage.TYPE_INT_ARGB);

try {

bim = ad(getClass().getResource("MyPhoto.jpg"));

} catch (IOException e) {e.printStackTrace();}

ribbon = new Ribbon(1,bim);

Thread gameThread = new Thread(this);

gameThread.start();

}

public static void main(String[] args){

GameRibbonPanel grp = new GameRibbonPanel();

grp.jframeInit();

}

@Override

public void run() {

while(true){

ribbon.update();

ribbon.Graphics());

try {

Thread.sleep(5);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

@Override

public void update(Graphics g) {

if(offScreenImage==null){

offScreenImage = ateImage(WIDTH,HEIGHT);

}

Graphics goff = Graphics();

paint(goff);

g.drawImage(offScreenImage,0,0,null);

}

@Override

public void keyTyped(KeyEvent e) {

}

@Override

public void keyPressed(KeyEvent e) {

KeyCode()==KeyEvent.VK_RIGHT){

ribbon.setCanMoveLeft(true);

}else KeyCode()==KeyEvent.VK_LEFT){

ribbon.setCanMoveRight(true);

}else KeyCode()==KeyEvent.VK_UP){

}

}

@Override

public void keyReleased(KeyEvent e) {

ribbon.setCanMoveLeft(false);

ribbon.setCanMoveRight(false);

}

}

------------------------------------------------------------------

Ribbon类

------------------------------------------------------------------

package com.qsuron;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

public class Ribbon {

public BufferedImage bim;

private int xImHead; //图像X指针

private int pWidth; //窗口宽度

private int pHeight; //窗口高度

private int width = 1110; //图像宽度

private int moveSize;

private boolean canMoveLeft;

private boolean canMoveRight;

public Ribbon(int moveSize,BufferedImage bim){

this.bim = bim;

xImHead = 0;

pWidth = GameRibbonPanel.WIDTH;

pHeight = GameRibbonPanel.HEIGHT;

canMoveRight = false;

canMoveLeft = false;

}

public void drawRibbon(Graphics g){

if(xImHead == 0){

drawRibbon(g,bim,0,pWidth,0,pWidth);

}else if(xImHead > 0 && xImHead < pWidth){

drawRibbon(g, bim, 0, xImHead, pWidth - xImHead, width);

drawRibbon(g, bim, xImHead, pWidth, 0, pWidth - xImHead);

}else if(xImHead >= pWidth){

drawRibbon(g, bim, 0, pWidth, width - xImHead, width - xImHead + pWidth);

}else if(xImHead < pWidth - width){

drawRibbon(g, bim, 0, width + xImHead, - xImHead, pWidth);

drawRibbon(g, bim, width + xImHead, pWidth, 0, pWidth - width - xImHead);

}else if(xImHead < 0 && xImHead >= pWidth - width){

drawRibbon(g, bim, 0, pWidth, -xImHead, pWidth - xImHead);

}

}

public void drawRibbon(Graphics g,BufferedImage bim,int dx1,int dx2,int sx1,int sx2){

g.drawImage(bim, dx1+100, 0 + 100, dx2+100, pHeight + 100, sx1, 0, sx2, pHeight, null);

}

public void update(){

if(canMoveLeft){

xImHead = (xImHead - moveSize) % width;

}else if(canMoveRight){

xImHead = (xImHead + moveSize) % width;

}

}

public void setCanMoveLeft(boolean canMoveLeft) {

this.canMoveLeft = canMoveLeft;

}

public void setCanMoveRight(boolean canMoveRight) {

this.canMoveRight = canMoveRight;

}

}

本文发布于:2024-02-04 21:01:39,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170716326059569.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:横版   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23