/*
* IsoFileBrowser.java
*
* Created on February 19, 2006, 4:29 AM
*/
package isoeditor;
import com.sun.corba.se.spi.activation._ActivatorImplBase;
import java.util.*;
import java.io.*;
import oCommon.*;
import oMathFP.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.datatransfer.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
public class IsoFileBrowserFrame extends IsoInternalFrame implements TreeSelectionListener, TreeModelListener, ComponentListener {
public static String baseDir = "../../data/editor/managed/";
public static String export_clientData_folder = "../../data/client/managed/";
public static boolean export_clientData = true;
public static String export_serverData_folder = "../../data/server/managed/";
public static boolean export_serverData = true;
public static IsoFileBrowserFrame instance;
public DefaultMutableTreeNode rootNode;
public DefaultTreeModel treeModel;
public IsoFileBrowserFrame_treeNode rootNode_obj;
public IsoExportTask exportTask = null;
public static final oEventId event_selected = new oEventId(IsoFileBrowserFrame.class, "selected");
Vector tmpSelectedPathStrings;
Vector tmpExpandedPathStrings;
public static final String filetypes[] = {
"png",
"bit",
"pal",
"til",
"ent",
"imp"};
public static final String fileicons_path[] = {
"fileicon_png",
"fileicon_bit",
"fileicon_pal",
"fileicon_til",
"fileicon_ent",
"fileicon_imp"
};
public static final String diricon_path = "fileicon_dir";
public static ImageIcon fileicons_img[];
public static ImageIcon diricon_img;
static {
fileicons_img = new ImageIcon[fileicons_path.length];
diricon_img = null;
try {
diricon_img = new ImageIcon(IsoMainFrame.class.getResource(IsoMainFrame.internalResource_folder + diricon_path + ".png"));
for (int i = 0; i < fileicons_path.length; i++) {
fileicons_img[i] = new ImageIcon(IsoMainFrame.class.getResource(IsoMainFrame.internalResource_folder + fileicons_path[i] + ".png"));
}
} catch (Exception e) {
System.out.println("Failed to load file icons");
System.out.println(e.toString());
}
oFileManager.baseDir = baseDir;
}
public class MyRenderer extends DefaultTreeCellRenderer {
public MyRenderer() {
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
try {
if (value != rootNode && leaf) {
IsoFileBrowserFrame_treeNode nodeobj = (IsoFileBrowserFrame_treeNode)((DefaultMutableTreeNode)value).getUserObject();
String path = nodeobj.path;
File file = new File(getSystemFilePath(path));
if (file.isDirectory()) {
setIcon(diricon_img);
} else {
int index = getIconIndex(path);
if (index >= 0)
setIcon(fileicons_img[index]);
if (isNodeDirty((DefaultMutableTreeNode)value)) {
if (sel) {
setForeground(new Color(175,175,255));
} else {
setForeground(new Color(0,0,255));
}
}
}
}
} catch (ClassCastException e) {
}
return this;
}
public int getIconIndex(String path) {
for (int i = 0; i < filetypes.length; i++) {
if (path.indexOf("." + filetypes[i]) >= 0) {
return i;
}
}
return -1;
}
}
public static boolean copyTransferFailed = false;
public static String copyDstPath = null;
public static final int COPY_KEYSTATE_NONE = 0;
public static final int COPY_KEYSTATE_COPY = 1;
public static final int COPY_KEYSTATE_CUT = 2;
public int copyKeyState = COPY_KEYSTATE_NONE;
public class MyTransferHandler extends TransferHandler {
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
for (int i = 0; i < transferFlavors.length; i++) {
if (transferFlavors[i].equals(IsoFileBrowserTransferable.dataflavor)
|| transferFlavors[i].equals(DataFlavor.stringFlavor))
return true;
}
return false;
}
public boolean isFileBrowserFlavor(DataFlavor[] transferFlavors) {
for (int i = 0; i < transferFlavors.length; i++) {
if (transferFlavors[i].equals(IsoFileBrowserTransferable.dataflavor))
return true;
}
return false;
}
public boolean isStringFlavor(DataFlavor[] transferFlavors) {
for (int i = 0; i < transferFlavors.length; i++) {
if (transferFlavors[i].equals(DataFlavor.stringFlavor))
return true;
}
return false;
}
protected Transferable createTransferable(JComponent c) {
Vector nodes = getSelectedNodes();
IsoFileBrowserTransferable transVec = new IsoFileBrowserTransferable();
for (int i = 0; i < nodes.size(); i++) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)nodes.elementAt(i);
transVec.v.addElement(node.getUserObject());
}
if (transVec.v.size() == 0) return null;
return transVec;
}
public int getSourceActions(JComponent c) {
return COPY_OR_MOVE;
}
public boolean importData(JComponent comp, Transferable t) {
if (t == null)
return false;
if (canImport(comp, t.getTransferDataFlavors())) {
if (isFileBrowserFlavor(t.getTransferDataFlavors())) {
try {
IsoFileBrowserTransferable transVec = (IsoFileBrowserTransferable)t.getTransferData(IsoFileBrowserTransferable.dataflavor);
Vector nodesToCopy = new Vector();
for (int i = 0; i < transVec.v.size(); i++) {
IsoFileBrowserFrame_treeNode nodeobj = (IsoFileBrowserFrame_treeNode)transVec.v.elementAt(i);
String path = getStringPathFromFilePath(nodeobj.path);
if (!stringPathExists(path)) {
continue;
}
nodesToCopy.addElement(getTreePathFromStringPath(path).getLastPathComponent());
}
copyDstPath = null;
if (nodesToCopy.size() > 0) {
DefaultMutableTreeNode copyDstNode = getNearestFolder((DefaultMutableTreeNode)fileTree.getLastSelectedPathComponent());
Java游戏中斜视角编辑器及引擎源代码.zip
需积分: 0 122 浏览量
更新于2022-08-29
收藏 3.25MB ZIP 举报
Java游戏开发是一个涵盖广泛的技术领域,它涉及到编程、图形渲染、物理模拟、人工智能等多个方面。在本案例中,"Java游戏中斜视角编辑器及引擎源代码.zip" 提供了一个专门针对斜视角游戏的编辑器和引擎的源码,这对于学习和理解游戏开发,特别是Java平台上的2D游戏开发,具有很高的价值。
我们来讨论“斜视角”(Isometric)这一概念。在游戏设计中,斜视角是一种视觉表现手法,通常用于策略游戏和某些角色扮演游戏,它给予玩家一个类似3D的视觉效果,但实际上仍然是2D平面。这种视角可以提供更好的空间感,使玩家更容易理解和操作游戏世界。
接着,我们来看“编辑器”。在游戏开发中,编辑器是用于创建和修改游戏内容的工具,包括地图、角色、动画等。Java游戏斜视角编辑器可能是用来帮助开发者构建游戏场景、设定角色行动路径、布置环境物体的界面,它通常包含拖放功能、层管理、预览等特性,让非程序员也能参与到游戏内容的制作中。
然后是“引擎”。游戏引擎是游戏开发的核心,它负责处理游戏的逻辑、渲染、音频、输入响应等任务。这个Java引擎可能包含了渲染斜视角图像的方法、碰撞检测算法、游戏循环和事件处理机制等。通过研究源代码,开发者可以学习如何实现这些功能,以及如何优化性能以适应不同平台。
在提供的压缩包中,"codefans.net"可能是一个网站的链接,这可能意味着这些源代码最初是在该网站上分享或讨论的。通常,这样的资源会伴随着一些教程、论坛讨论或用户社区,对于深入学习和解决问题非常有帮助。
学习这些源代码,开发者可以了解如何在Java中实现游戏对象的表示、图形的绘制、碰撞检测、用户交互处理等关键模块。此外,还可以了解到如何利用Java的并发特性来优化多线程游戏性能,以及如何利用Java的库如Java2D或libGDX等进行游戏开发。
"Java游戏中斜视角编辑器及引擎源代码.zip"是一个宝贵的教育资源,它可以帮助开发者提升Java游戏开发技能,理解2D游戏的内部工作原理,同时也能激发创新思维,设计出更复杂、更具吸引力的游戏。无论是初学者还是有经验的开发者,都能从中获益良多。
「已注销」
- 粉丝: 119
- 资源: 213
最新资源
- 海康摄像头ActiveX控件是专为视频监控设备,只需设置摄像头用户名,密码,IP,端口即可
- 我的nvim的init.lua配置
- 最新操作系统试题及答案
- 毕业设计,基于Python+Django+Vue+MySql开发前后端分离的社团管理系统,含源码,数据库,毕业论文,视频教程
- 社团管理系统-毕业设计,基于Python+Django+Vue+MySql开发,前后端分离,源码+数据库+毕业论文+视频演示
- 钻模板工艺设计及数控编程.docx
- 综合物流电子商务平台建设项目可行性研究报告.doc
- 总体设计教案稿软件工程精美解析.ppt
- 最全计算机网络期末考试试题及答案.doc
- 基于MATLAB软件和DNN深度神经网络的MNIST数据集手写字符识别源代码
- 精选毕设项目-51报名管家小程序.zip
- 精选毕设项目-3C手机商城小程序.zip
- 精选毕设项目- 班夫旅游小程序.zip
- 精选毕设项目-cncode论坛.zip
- 精选毕设项目-Bookshare 借书小程序.zip
- 精选毕设项目-IT公司.zip