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

📄 resourcefactory.java

📁 联机坦克游戏
💻 JAVA
字号:
/*
 * Created on 2005-3-14
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package resource;

import org.w3c.dom.*;

import javax.xml.parsers.*;

import java.util.Hashtable;
import java.io.*;
import java.awt.Image;
import java.awt.RenderingHints;

import javax.imageio.*;
import java.util.Properties;

/**
 * @author AnSen
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ResourceFactory {
	
	private static ResourceFactory srcLoader = null;

	private Hashtable hstblProperties = new Hashtable();
	private RenderingHints renderingHints=new RenderingHints(null);
	
	public static ResourceFactory getInstance() {
		if (srcLoader == null) {
			srcLoader = new ResourceFactory();
		}
		return srcLoader;
	}
	
	private ResourceFactory() {
		Document doc = null;
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder bulider = factory.newDocumentBuilder();
			doc = bulider.parse("resource" + File.separator + "resource.xml");
		} catch (IOException e) {
			e.printStackTrace();
			return;
		} catch (Exception er) {
			return;
		}
		trancformDocument(doc);

		//new renderingHints
		renderingHints.put(RenderingHints.KEY_ALPHA_INTERPOLATION,
				RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
		
		renderingHints.put(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_OFF);
		
		renderingHints.put(RenderingHints.KEY_COLOR_RENDERING,
				RenderingHints.VALUE_COLOR_RENDER_SPEED);
		
		renderingHints.put(RenderingHints.KEY_DITHERING,
				RenderingHints.VALUE_DITHER_DISABLE);
		
		renderingHints.put(RenderingHints.KEY_FRACTIONALMETRICS,
				RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
		
		renderingHints.put(RenderingHints.KEY_INTERPOLATION,
				RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
		
		renderingHints.put(RenderingHints.KEY_RENDERING,
				RenderingHints.VALUE_RENDER_SPEED);
		
		renderingHints.put(RenderingHints.KEY_STROKE_CONTROL,
				RenderingHints.VALUE_STROKE_NORMALIZE);
		
		renderingHints.put(RenderingHints.KEY_TEXT_ANTIALIASING,
				RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
		
	}
	
	private void trancformDocument(Document doc){
		NodeList nlsResources=doc.getElementsByTagName("RESOURCE");
		String resourceID=null;
		for(int i=0;i<nlsResources.getLength();i++){
			resourceID=nlsResources.item(i).getFirstChild().getNodeValue();
			
			NodeList nlsRsr=doc.getElementsByTagName(resourceID);//check resource
			
			if(nlsRsr.getLength()==1){
				Element elmRsr=(Element)nlsRsr.item(0);
				this.hstblProperties.put(resourceID,
										createResource(elmRsr));
			}
		}
	}
	
	private Properties createResource(Element rsc){
		NodeList nlsProp=rsc.getChildNodes();
		Properties prop=new Properties();
		for(int i=0;i<nlsProp.getLength();i++){
			if(nlsProp.item(i).getNodeName().charAt(0)=='#'){
				continue;
			}
			Element elm=(Element)(nlsProp.item(i));
			if(elm.getNodeName().charAt(0)!='#'){
				//is images properties
				if(elm.getNodeName().indexOf("IMAGES")>=0){
					prop.put(elm.getNodeName(),
							readImages(rsc.getNodeName(),elm));
				}else{
				//normal properties
					prop.setProperty(elm.getNodeName(),
								elm.getFirstChild().getNodeValue());
				}
			}
		}
		return prop;
	}
	
	private Image[] readImages(String resourceID,Element elmImages){
		NodeList nlsImages=elmImages.getElementsByTagName("IMAGE");
		int nImages=nlsImages.getLength();
		Image[] images=new Image[nImages];
		for(int i=0;i<nImages;i++){
			File file=new File("resource" + File.separator + resourceID
					+ File.separator
					+ nlsImages.item(i).getFirstChild().getNodeValue());
			try{
				images[i]=ImageIO.read(file);
			}catch(IOException er){
				return null;
			}
		}
		return images;
	}
	
	public Properties getProperties(String resourceID){
		return (Properties)this.hstblProperties.get(resourceID);
	}
	
	public RenderingHints getRenderingHints(){
		return renderingHints;
	}
}

⌨️ 快捷键说明

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