- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这是重复,我很抱歉,但我已经阅读了几十篇关于这个问题的帖子,但我仍然无法解决它。我正在使用 Intellij IDE 在 Java 中开发一个项目(实际上是这个游戏 http://www.kilobolt.com/unit-2-creating-a-game-i.html,它出现在这个论坛上)。我的问题是 java 小程序无法找到任何资源(图像和文本)。 getImage() 方法无法使用“../data/image.png”或“/data/image.png”或常规的“data/image.png”加载图像。文件阅读器也是如此。我还尝试了 getDocumentBase() 而不是 getCodeBase()。目前我正在本地网站 (IIS locahost) 上存储图像,但这不是解决方案,此外,我不能那样使用 map1.txt(我必须使用本地路径)。如果我遗漏了任何重要的东西,我很抱歉。
注意:“Resources.IMAGE”是单独类中的静态字段,其值如下:“http://localhost/folder/image.png”
代码:
package sinisa;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import sinisa.framework.Animation;
public class StartingClass extends Applet implements Runnable, KeyListener {
//TODO: Create constructor for this, and a calculator for speed
private static final int X_SCREEN = 800;
private static final int Y_SCREEN = 480;
private Robot robot;
private Hellboy hellb0;
private Hellboy hellb1;
private Image image;
private Image character;
private Image character2;
private Image character3;
private Image characterDown;
private Image characterJumped;
private Image characterWalkLeft;
private Image characterWalkRight;
private Image background;
private Image currentSprite;
private Image hellboy;
private Image hellboy2;
private Image hellboy3;
private Image hellboy4;
private Image hellboy5;
public static Image tileDirt;
public static Image tileGrassTop;
public static Image tileGrassBot;
public static Image tileGrassLeft;
public static Image tileGrassRight;
public static Image tileOcean;
private URL base;
private Graphics second;
private Animation anim;
private Animation hanim;
private Animation wanim;
private static Background bg1;
private static Background bg2;
private ArrayList<Tile> tileArray = new ArrayList<Tile>();
int i = 0; int j = 0;
@Override
public void init() {
setSize(X_SCREEN, Y_SCREEN);
setBackground(Color.BLACK);
setFocusable(true);
addKeyListener(this);
Frame frame = (Frame) this.getParent().getParent();
frame.setTitle("Game - Alpha 0.1");
try {
base = getCodeBase();
} catch (Exception e) {
e.printStackTrace();
}
character = getImage(base, Resources.CHARACTER);
character2 = getImage(base, Resources.CHARACTER2);
character3 = getImage(base, Resources.CHARACTER3);
characterDown = getImage(base, Resources.CHARACTER_DOWN);
characterJumped = getImage(base, Resources.CHARACTER_JUMPED);
characterWalkLeft = getImage(base, Resources.CHARACTER_WALK_LEFT);
characterWalkRight = getImage(base, Resources.CHARACTER_WALK_RIGHT);
background = getImage(base, Resources.BACKGROUND);
tileDirt = getImage(base, Resources.TILEDIRT);
tileOcean = getImage(base, Resources.TILEOCEAN);
hellboy = getImage(base, Resources.HELLBOY);
hellboy2 = getImage(base, Resources.HELLBOY2);
hellboy3 = getImage(base, Resources.HELLBOY3);
hellboy4 = getImage(base, Resources.HELLBOY4);
hellboy5 = getImage(base, Resources.HELLBOY5);
anim = new Animation();
anim.addFrame(character, 1250);
anim.addFrame(character2, 50);
anim.addFrame(character3, 50);
anim.addFrame(character2, 50);
hanim = new Animation();
hanim.addFrame(hellboy, 100);
hanim.addFrame(hellboy2, 100);
hanim.addFrame(hellboy3, 100);
hanim.addFrame(hellboy4, 100);
hanim.addFrame(hellboy5, 100);
hanim.addFrame(hellboy4, 100);
hanim.addFrame(hellboy3, 100);
hanim.addFrame(hellboy2, 100);
wanim = new Animation();
wanim.addFrame(characterWalkLeft, 50);
wanim.addFrame(character, 50);
wanim.addFrame(characterWalkRight, 50);
currentSprite = anim.getImage();
}
@Override
public void start() {
bg1 = new Background(0, 0);
bg2 = new Background(2160, 0);
try {
loadMap("../data/map1.txt");
} catch (IOException e) {
e.printStackTrace();
}
hellb0 = new Hellboy(340, 360);
hellb1 = new Hellboy(700, 360);
robot = new Robot();
Thread thread = new Thread(this);
thread.start();
}
@Override
public void stop() {
}
@Override
public void destroy() {
}
@Override
public void run() {
while(true) {
if(robot.isJumped()) {
currentSprite = characterJumped;
}
else if(robot.isMovingLeft() || robot.isMovingRight()) {
currentSprite = wanim.getImage();
}
else if(!robot.isJumped() && !robot.isDucked()) {
currentSprite = anim.getImage();
}
robot.update();
ArrayList projectiles = robot.getProjectiles();
for(int i = 0; i < projectiles.size(); i++) {
Projectile p = (Projectile) projectiles.get(i);
if(p.isVisible()) {
p.update();
}
else {
projectiles.remove(i);
}
}
bg1.update();
bg2.update();
updateTiles();
hellb0.update();
hellb1.update();
animate();
repaint();
try {
Thread.sleep(17);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void update(Graphics g) {
if (image == null) {
image = createImage(this.getWidth(), this.getHeight());
second = image.getGraphics();
}
second.setColor(getBackground());
second.fillRect(0, 0, getWidth(), getHeight());
second.setColor(getForeground());
paint(second);
g.drawImage(image, 0, 0, this);
}
@Override
public void paint(Graphics g) {
g.drawImage(background, bg1.getBgX(), bg1.getBgY(), this);
g.drawImage(background, bg2.getBgX(), bg2.getBgY(), this);
g.drawImage(hanim.getImage(), hellb0.getCenterX()-48, hellb0.getCenterY()-48, this);
g.drawImage(hanim.getImage(), hellb1.getCenterX()-48, hellb1.getCenterY()-48, this);
paintTiles(g);
g.drawImage(currentSprite, robot.getCenterX() - 61, robot.getCenterY() - 63, this);
ArrayList projectiles = robot.getProjectiles();
for (int i = 0; i < projectiles.size(); i++) {
Projectile p = (Projectile) projectiles.get(i);
g.setColor(Color.YELLOW);
g.fillRect(p.getX(), p.getY(), 10, 5);
}
}
public void animate() {
anim.update(10);
hanim.update(50);
wanim.update(10);
}
private void updateTiles() {
for (int i = 0; i < tileArray.size(); i++) {
Tile t = (Tile) tileArray.get(i);
t.update();
}
}
private void paintTiles(Graphics g) {
for (int i = 0; i < tileArray.size(); i++) {
Tile t = (Tile) tileArray.get(i);
g.drawImage(t.getTileImage(), t.getTileX(), t.getTileY(), this);
}
}
private void loadMap(String filename) throws IOException {
ArrayList lines = new ArrayList();
int width = 0;
int height = 0;
BufferedReader reader = new BufferedReader(new FileReader(filename));
while (true) {
String line = reader.readLine();
// no more lines to read
if (line == null) {
reader.close();
break;
}
if (!line.startsWith("!")) {
lines.add(line);
width = Math.max(width, line.length());
}
}
height = lines.size();
for (int j = 0; j < 12; j++) {
String line = (String) lines.get(j);
for (int i = 0; i < width; i++) {
System.out.println(i + "is i ");
if (i < line.length()) {
char ch = line.charAt(i);
Tile t = new Tile(i, j, Character.getNumericValue(ch));
tileArray.add(t);
}
}
}
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Move up");
break;
case KeyEvent.VK_DOWN:
currentSprite = characterDown;
if (!robot.isJumped()){
robot.setDucked(true);
robot.setSpeedX(0);
}
break;
case KeyEvent.VK_LEFT:
robot.moveLeft();
robot.setMovingLeft(true);
break;
case KeyEvent.VK_RIGHT:
robot.moveRight();
robot.setMovingRight(true);
break;
case KeyEvent.VK_SPACE:
robot.jump();
break;
case KeyEvent.VK_CONTROL:
if(!robot.isDucked()) {
robot.shoot();
}
break;
}
}
@Override
public void keyReleased(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
System.out.println("Stop moving up");
break;
case KeyEvent.VK_DOWN:
currentSprite = anim.getImage();
robot.setDucked(false);
break;
case KeyEvent.VK_LEFT:
robot.stopLeft();
break;
case KeyEvent.VK_RIGHT:
robot.stopRight();
break;
case KeyEvent.VK_SPACE:
break;
}
}
@Override
public void keyTyped(KeyEvent e) {
}
public static Background getBg1() {
return bg1;
}
public static Background getBg2() {
return bg2;
}
}
项目文件夹层次结构:
最佳答案
我遇到了同样的问题...我通过更改检索基本 URL 的方法修复了它。
try {
base = StartingClass.class.getResource("/data/background.png");
} catch (Exception e) {
e.printStackTrace();
}
// Image Setups
character = getImage(base, "character.png");
characterDown = getImage(base, "down.png");
...
关于Java 小程序无法定位资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460693/
有人告诉我,如果我只有一个“东西”,比如家(不是多个家),我应该在 routes.rb 中使用资源 :home,而不是资源 :home。但是当我查看路由时,POST 函数似乎想要 home#creat
Activity 开始。这些代码框架顺利通过。 // Initialize array adapters. One for already paired devices and //
资源 search-hadoop.com search-hadoop.com索引所有邮件列表,非常适合历史搜索。当你遇到问题时首先在这里搜索,因为很可能有人已经遇到了你的问题。 邮件列表 在A
我是 WPF 的新手,正在努力使用位于单独程序集中的样式。这就是我正在做的:- 我有一个带有\Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了\Themes 内的子文
我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,区别在于这些文件实际上并不存在于文件系统中的特定位置,而只是 java 对象。 这些当前由使用 SettingProv
如果我在 XAML 中使用以下内容,我会收到错误消息: 错
我正在使用 laravel 资源来获取 api 的数据: return [ 'id' => $this->id, 'unread' =>
我有以下 pom.xml: 4.0.0 mycompany resource-fail 0.0.1-SNAPSHOT BazBat
许多GDI +类都实现IDisposable,但是我不确定何时应该调用Dispose。对于使用new或静态方法(例如Graphics.CreateGraphics)创建的实例来说,这很明显。但是,由属
我正在构建一组 RESTful 资源,其工作方式如下:(我将使用“people”作为示例): 获取/people/{key} - 返回一个人对象 (JSON) GET/people?first_nam
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一个使用 $resource 的简单 Controller : var Regions = $resource('mocks/regions.json'); $scope.regions =
在 Azure 门户中,如何查看不同资源之间的依赖关系。我特别想查看哪些资源正在使用我要删除的存储。 最佳答案 您可以使用应用程序洞察应用程序 map 来执行此操作: 您还可以打开存储帐户的日志记录:
我正在使用 ionic 生成资源(图标和启动画面)。我正在使用 ionic v2.1.0 和 cordova v6.4.0。 到目前为止我一直在使用(它在以前的版本中工作): cordova plat
是否可以使用 Assets 包含子文件夹中的文件? 示例:[base_url]/assets/css/pepper-grinder/jquery-ui-1.8.11.custom.min.css 最佳
我正在阅读一些尝试教授 Android 开发的书。在书中,作者概述了 res/下的一些目录。他提到 res/menu 包含基于 XML 的菜单规范。他还提到了保存“通用文件”的 res/raw。当我创
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在服务器上使用 express-resource。在我的 AngularJS Controller 中: var User = $resource('/services/users/:use
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
对于我正在创建的(网络)应用程序,我需要使用基本身份验证在我的 UIWebView 中加载页面。 现在设置我使用的授权 header : NSString *result = [NSString st
我是一名优秀的程序员,十分优秀!