当许多精灵在屏幕上时,Java Swing游戏的性能很差

我正在Swing中制作一个简单的塔防游戏,当我尝试在屏幕上放置许多精灵(超过20个)时,我遇到了性能问题。 整个游戏发生在具有setIgnoreRepaint(true)的JPanel上。 这是paintComponent方法(con是Controller): public void paintComponent(Graphics g){ super.paintComponent(g); //Draw grid g.drawImage(background, 0, 0, null); if (con != null){ //Draw towers for (Tower t : con.getTowerList()){ t.paintTower(g); } //Draw targets if (con.getTargets().size() != 0){ for (Target t : con.getTargets()){ t.paintTarget(g); } //Draw shots for (Shot s : con.getShots()){ s.paintShot(g); } } } } Target类simple在其当前位置绘制BufferedImage。 getImage方法不会创建新的BufferedImage,它只返回Controller类的实例: public […]

从原始数据的字节数组中获取缓冲图像

我正在使用JNA。 我从我的c ++方法获取原始数据的字节数组。 现在我被困在如何使用这个原始数据字节数组在java中获取缓冲图像。 我曾尝试过很少的东西来把它作为tiff图像,但我得到了成功。 这是我到目前为止尝试的代码。 这里我的字节数组包含16位灰度图像的数据。 我从x传感器设备获得这些数据。 现在我需要从这个字节数组中获取图像。 第一次尝试 byte[] byteArray = myVar1.getByteArray(0, 3318000);//array of raw data ImageInputStream stream1=ImageIO.createImageInputStream(newByteArrayInputStream(byteArray)); ByteArraySeekableStream stream=new ByteArraySeekableStream(byteArray,0,3318000); BufferedImage bi = ImageIO.read(stream); 第二个尝试 SeekableStream stream = new ByteArraySeekableStream(byteArray); String[] names = ImageCodec.getDecoderNames(stream); ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null); //at this line get the error ArrayIndexOutOfBoundsException: 0 RenderedImage im = dec.decodeAsRenderedImage(); […]

菜单未在应用中显示

出于某种原因,我的操作菜单在我的Android Studio应用程序中消失了。 我正在按照教程学习如何创建一个Android应用程序,但我最终遇到了这个问题。 我正在使用atm的教程: http : //www.raywenderlich.com/56109/make-first-android-app-part-2 这是我的main.xml的样子: menu_main.xml: 我在这段代码中做错了什么? 我没有得到任何错误。 我几乎从教程中复制粘贴了这个。 我不认为它是我的java代码,但仍然在这里,有人认为问题在于该代码。 MainActivity.java: package android.stefan.testappnieuw; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; public class MainActivity extends Activity implements View.OnClickListener, AdapterView.OnItemClickListener { TextView mainTextView; […]

Eclipse没有显示已弃用的警告?

根据Javadocs: public Date (int year, int month, int day) This constructor was deprecated in API level 1. Date date = new Date(year,month,date); 这个构造函数在API Level 1中已弃用,但我的Eclipse并未在我正在创建的Android项目中给出弃用警告。 可能是什么问题? 我正在制造一个愚蠢的错误吗? 我已经在4.0版本编译了该项目。 我检查了Lint偏好,没关系。 我没有设置@SuppressWarnings ,因此排除了。 这是我正在使用的代码: import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import android.app.Activity; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Dialog; import android.content.Context; import android.graphics.Paint; import android.os.Bundle; import android.view.View; import […]

IntelliJ Ultimate无法在Play 2.3(Java)项目测试中找到路由

虽然我的测试运行得很好,IntelliJ抱怨它找不到路由对象,但代码自动完成无法工作。 我查看了整个文档,这应该可行。 这是IntelliJ报告的内容 有关我的项目配置可能出错的任何想法?

反向字节顺序为long

我有一个long变量,我需要反转它的字节顺序。 例如: B1, B2, … , B8我应该返回一个由B8, B7, …, B1组成的长B8, B7, …, B1 。 如何通过使用按位运算来实现?

迷宫生成prim算法并非遍历所有细胞

我正在尝试实现Prim迷宫生成算法: 从充满墙壁的网格开始。 选择一个单元格,将其标记为迷宫的一部分。 将单元格的墙添加到墙列表中。 虽然列表中有墙: 从列表中选择一个随机墙。 如果细胞在另一侧 尚未进入迷宫: 使墙成为通道,并将对面的细胞标记为迷宫的一部分。 将单元格的相邻墙添加到墙列表中。 如果对面的单元格已经在迷宫中,请从列表中移除墙壁。 删除一些实现细节,我的实现如下所示: Cell[][] maze 是带有细胞的矩阵。 每个单元格都有左/右/上/按钮墙。 边界墙标记为boolean frontier ,并不是实施的一部分,因为我想保持我的迷宫框架。 public Cell[][] prim(){ List walls = new ArrayList(); //Pick a cell, mark it as part of the maze int initialCellI = rnd(sizeX)-1; int initialCellJ = rnd(sizeY)-1; Cell randomCell = maze[initialCellI][initialCellJ]; randomCell.setPartOftheMaze(true); //Add the walls of the […]

ActionBarSherlock有多个MenuItems?

我在我的一个应用程序中使用了带有两个MenuItem的ABS 4.0,但发现了一个小错误:当按下第二个MenuItem时,它与第一个完全相同… 我已经尝试了我能想到的一切,但它没有用。 我改变了onOptionItemSelected,因为我认为这是我需要编辑的方法。 编辑: 我一直在关注@ Ollie的建议,但LogCat和Debug都没有显示出奇怪的东西。 也许它在代码的其他部分,或ABS的声明? 这是整个代码,如果你能看一遍,那就太好了! 整个Activity的代码,因为它可能在其他地方? package bas.sie.Antonius; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; public class TeacherInfo extends SherlockActivity { String URLhome; String Info; String TeacherAb; TextView mTxtvInfo; Button mBtnTeacherStSchedule; Button mBtnTeacherDaySchedule; private static String mainUrl = “http://www.carmelcollegegouda.nl/site_ant/”; private […]

如何使JTextComponent的插入符号跳过所选文本?

许多环境中本机文本字段的正常行为如下: 带有文本“abcdefg”的文本字段。 我用鼠标从左到右选择“efg”。 插入符号现在落后于“g”。 当我通过按左光标键一次将插入符号向左移动时,删除选择并且插入符号在“e”之前。 当我在JTextField或JTextArea(在Mac OS上测试)中执行相同操作时,完成相同的操作会导致插入符号在“g”之前。 我知道如何通过使用KeyListener并在每个组件上注册它来以编程方式更改它,但我正在寻找一种方法来更改我的整个应用程序。 那可能吗? 有没有国旗,我找不到或者我必须破解我的外观和感觉? 谢谢

Maven可以重新签署依赖关系吗?

我正在使用maven-jarsigner-plugin来签署我的阴影超级jar。 我确实需要在自己的jar中分发一些依赖项,并希望从Maven仓库获取这些jar,清除它们的任何现有签名,并使用我自己的证书签名。 有没有Maven插件可以做到这一点,或者我会涉及一些Ant插件hackery?