📄 resourcegroup.java
字号:
package pp.actor;
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;
import like.actor2D.*;
import like.graphics.*;
/****************************************************
*加载地表,障碍物,道具图片.
*并提供给MAP,Fraise(障碍物)类,道具类使用
*调用时只需要
*ResourceGroup rg = new ResourceGroup();
*rg.init(Component component);
*Image image = rg.getImage(1,2);//1是ImageType,2是ImageIndex
*;//ImageType(1-地表,2-障碍,3-道具)
****************************************************/
public class ResourceGroup
{
public final static int Audio_login = 0;
public final static int Audio_dead = 1;
public final static int Audio_getProperty = 2;
public final static int Audio_putPP = 3;
public final static int Audio_win = 4;
public final static int Audio_loss = 5;
public final static int Audio_star = 6;
public final static int Audio_backGround = 7;
public int tileNumbers;//地表数,访问索引tiles[0..tileNumbers-1]
public int fraiseNumbers;//障碍物数,访问索引fraises[0..fraiseNumbers-1]
public int proNumbers;//道具数,访问索引proImages[0..proNumbers-1]
//地表
String [] tiles = new String[20];
Image [] tileImages = new Image[20];
//障碍物
public int [] canMove = new int [20];
public int [] canDestroy = new int [20];
int [] haveShadow = new int [20];
int [] needAnim = new int [20];
int [] frameWidth = new int [20];
int [] animWait = new int [20];
String [] fraises = new String[20];
Image []fraiseImages = new Image[20];
Image []animationStrip = new Image[20];
//道具
String [] properties = new String[20];
Image [] proImages = new Image[20];
//阴影和背景
Image shadow;
Image playerShadow;
Image proShadow;
Image backGround;
//公共声音
AudioClip [] audios = new AudioClip[8];
public ResourceGroup(String file)
{
Scanner scanner = null;
try
{
scanner = new Scanner(new File(file));
}
catch(Exception e)
{
e.printStackTrace();
}
//地表
tileNumbers = scanner.nextInt();
//System.out.println(tileNumbers);
scanner.nextLine();
for(int i=1;i<=tileNumbers;i++)
{
scanner.nextInt();
tiles[i] = scanner.next();
//System.out.println(tiles[i]);
}
//障碍物
fraiseNumbers = scanner.nextInt();
scanner.nextLine();
//System.out.println(fraiseNumbers);
for(int i=1;i<=fraiseNumbers;i++)
{
scanner.nextInt();
canMove[i] = scanner.nextInt();
canDestroy[i] = scanner.nextInt();
haveShadow[i] = scanner.nextInt();
needAnim[i] = scanner.nextInt();
if(needAnim[i]==1)
{
frameWidth[i] = scanner.nextInt();
if(this.canDestroy[i]==0)
animWait[i] = scanner.nextInt();
}
fraises[i] = scanner.next();
}
//加载声音
try
{
scanner = new Scanner(new File(file.substring(0,file.length()-4)+"_au.ini"));
for(int i=0;i<=7;i++)
{
scanner.next();
audios[i] = Applet.newAudioClip(new URL("file","localhost",scanner.next()));
}
}
catch(Exception e){}
}
public void init(Component component)
{
ImageLoader load;
for(int i=1;i<=tileNumbers;i++)
{
load = new ImageLoader(component,tiles[i],true);
tileImages[i] = load.getImage();
}
for(int i=1;i<=fraiseNumbers;i++)
{
load = new ImageLoader(component,fraises[i],true);
if(this.needAnim[i]==1)
{
animationStrip[i] = load.getImage();
fraiseImages[i] = load.extractCell(0,0,frameWidth[i],animationStrip[i].getHeight(component));
}
else
{
fraiseImages[i] = load.getImage();
}
}
for(int i=1;i<=this.proNumbers;i++)
{
load = new ImageLoader(component,properties[i],true);
proImages[i] = load.getImage();
}
//道具
load = new ImageLoader(component,"res\\common\\pro.gif",true);
proNumbers = 4;
this.proShadow = load.extractCell(0,0,36,54);
for(int i=1;i<=proNumbers;i++)
{
proImages[i] = load.extractCell(36*i,0,36,54);
}
load = new ImageLoader(component,"res\\common\\playerShadow.gif",true);
this.playerShadow = load.getImage();
//阴影和背景
load = new ImageLoader(component,"res\\common\\shadow.gif",true);
this.shadow = load.getImage();
load = new ImageLoader(component,"res\\common\\backGround.gif",true);
this.backGround = load.getImage();
}
//是否需要画阴影
public boolean needPaintShadow(int i)
{
return this.haveShadow[i]==1? true:false;
}
//类型1-地表,2-障碍,3-道具
public Image getImage(int type,int index)
{
if(type==1)
{
if(index>0 && index<=tileNumbers)
{
return tileImages[index];
}
//System.out.println("请求图片不存在,返回null"+type+","+index);
return null;
}
else if(type==2)
{
if(index>0 && index<=fraiseNumbers)
{
return fraiseImages[index];
}
//System.out.println("请求图片不存在,返回null"+type+","+index);
return null;
}
else
{
if(index>0 && index<=proNumbers)
{
return proImages[index];
}
//System.out.println("请求图片不存在,返回null"+type+","+index);
return null;
}
}
public Image getAnimationStrip(int index)
{
return animationStrip[index];
}
public Image getShadow()
{
return this.shadow;
}
public Image getPlayerShadow()
{
return this.playerShadow;
}
public Image getProShadow()
{
return this.proShadow;
}
public Image getBackGround()
{
return this.backGround;
}
//得到声音
public AudioClip getAudio(int Audio_index) {return this.audios[Audio_index];}
}
/*class Test extends Frame
{
ResourceGroup fg;
public Test()
{
super("测试");
fg = new ResourceGroup("configures\\xq.ini");
this.setSize(400,400);
this.setVisible(true);
fg.init(this);
}
public void paint(Graphics g)
{
g.drawImage(fg.getBackGround(),10,10,this);
g.drawImage(fg.getShadow(),50,50,this);
}
public static void main(String [] args)
{
new Test();
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -