- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用我当前的代码,我有一个角色可以加载到动画的 Sprite 表中。当我运行代码时出现我的问题。游戏运行良好,只是玩家加载/循环 Sprite 的速度太快。我相信这源于整体游戏时间/更新。我应该声明该游戏是通过小程序运行的。我收集了一些有关 SwingerWorkers 的信息,但我不知道如何根据我的需要操纵它。如果有人可以看一下我的代码并让我知道我能做什么,我将不胜感激。
玩家构造函数:
public Player(Image pic, ImageObserver IO){
positionX=200;
positionY=200;
destinationX=(int)positionX;
destinationY=(int)positionY;
speed = 2.3;
girlImage=pic;
this.io=IO;
width=120;
height=100;
//this.playerImage=playerImage;
// Gets each sprite
BufferedImage img = createImage();
for(int j=0;j<4;j++)
{
for(int i = 0; i < frameCount; i++) {
girlAll[j][i] = girl[j].getSubimage(imgWidth*i, 0, imgWidth, imgHeight);
}//end of for
}//end of for
}
// Image loader
private BufferedImage createImage(){
//BufferedImage bufferedImage;
try {
girl[0] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_northeast_walk.png"));
girl[1] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_northwest.png"));
girl[2] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_southeast.png"));
girl[3] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_southwest.png"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
绘制方法:
public void draw(Graphics g){
//g.drawImage(girlImage, (int)positionX,(int) positionY,io);
picNum = (picNum + 1) % frameCount;
pics = girlAll[x];
if (x==0)
g.drawImage(pics[picNum], (int) (positionX), (int) (positionY), io);
if (x==1)
g.drawImage(pics[picNum], (int) (positionX), (int) (positionY), io);
if (x==2)
g.drawImage(pics[picNum], (int) (positionX), (int) (positionY), io);
if (x==3)
g.drawImage(pics[picNum], (int) (positionX), (int) (positionY), io);
}
SwingWorker 尝试:
SwingWorker worker = new SwingWorker<BufferedImage[], Void>() {
public BufferedImage[] doInBackground(){
//BufferedImage bufferedImage;
try {
girl[0] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_northeast_walk.png"));
girl[1] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_northwest.png"));
girl[2] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_southeast.png"));
girl[3] = ImageIO.read(new File("C:/Users/blutuu/Documents/Marlin/UD/Workspace S13/MoD/src/female_player_southwest.png"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public void loadImg() {
doInBackground();
for(int j=0;j<4;j++)
{
for(int i = 0; i < frameCount; i++) {
girlAll[j][i] = girl[j].getSubimage(imgWidth*i, 0, imgWidth, imgHeight);
}//end of for
}//end of for
}
};
}
运行游戏(来自“Game”类):
public void init(){
//Execute a job on the event-dispatching thread:
//creating this applet's GUI.
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI();
}
});
} catch (Exception e) {
System.err.println("createGUI didn't successfully complete");
}
}
线程处理:
private void gameStuff(){
try {Thread.sleep(sleepTime);}
catch (InterruptedException e) {}
mouseClicked=false;
}
游戏渲染:
public void update (Graphics g)
{
// initialize buffer
if (dbImage == null)
{
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics ();
}
// clear screen in background
dbg.setColor (getBackground ());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// draw elements in background
//dbg.setColor (getForeground());
paint (dbg);
// draw image on the screen
g.drawImage (dbImage, 0, 0, this);
}
另一种渲染方法:
private void hud(Graphics g){
g.setColor(Color.orange);
g.fillRect(300, 0, 500, 80);
g.fillRect(200, 0, 100, 80);
//SHOVEL IMAGE AND BUTTON
g.drawImage(shovelImage, 520,0,this);
g.setColor(Color.black);
g.drawRect(520, 0, 60, 80);//show boundaries
if(mouseClicked && new Rectangle(520, 0, 60, 80).contains(mx,my))
toolSelected=1; //sets tool selected to shovel
//ROCKS IMAGE AND BUTTON
g.drawImage(rocksImage, 600,0, this);
g.drawRect(600, 0, 60, 80);//show boundaries
if(mouseClicked && new Rectangle(600, 0, 60, 80).contains(mx,my))
toolSelected=2; //sets tool selected to shovel
//JACKHAMMER IMAGE AND BUTTON
g.drawImage(jackHammerImage, 680,0, this);
g.drawRect(680, 0, 60, 80);//show boundaries
if(mouseClicked && new Rectangle(680, 0, 60, 80).contains(mx,my))
toolSelected=3; //sets tool selected to shovel
if(timer.getAngle()<360){
timer.draw(g);
}
if(timer.getAngle()==360){
raining=true;
timer.reset();
addDrops();
roundNum++;
puddles();
}
drawProgressBar(g);
if(toolSelected == 1)
{
Message = "Native Delaware plants";
Message2 = "are good";
}
else if(toolSelected == 2)
{
Message = "Rocks with Runoff";
Message2 = " ";
}
else if(toolSelected == 3)
{
Message = "Permeated Driveways";
Message2 = "help with excesse water";
}
else{
Message = "Play On";
Message2 = " ";
}
g.drawString("Round "+roundNum, 350, 30);
g.drawString(Message, 205, 40);
g.drawString(Message2, 205, 55);
drawTiles(g);
}
最佳答案
update(Graphics g)
。这是用于 AWT 的,但对于 Swing 来说并不合适。图形教程会告诉您这一点。paint(...)
或 paintComponent(...)
。欲了解更多详情,请查看basic Swing drawing tutorial还有a more advanced article关于 AWT 和 Swing 中的绘画。例如:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
@SuppressWarnings("serial")
public class SpriteAnimationApplet extends JApplet {
private static final String SPRITE_SHEET_SPEC = "http://www.funorb.com/img/images/game/"
+ "central/dev_diary/sprite_sheet_full.gif";
private static final int SPRITE_ROWS = 8; // an 8 x 8 sprite sheet
@Override
public void init() {
try {
final Icon[] icons = SpriteIO.getSprites(SPRITE_SHEET_SPEC, SPRITE_ROWS);
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
SpriteAnimationPanel spritePanel = new SpriteAnimationPanel(icons);
getContentPane().add(spritePanel);
spritePanel.startAnimation();
}
});
} catch (InvocationTargetException e) {
e.printStackTrace();
System.exit(-1);
} catch (InterruptedException e) {
e.printStackTrace();
System.exit(-1);
} catch (MalformedURLException e) {
e.printStackTrace();
System.exit(-1);
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
}
class SpriteIO {
public static Icon[] getSprites(String spriteSheetSpec, int spriteRows)
throws MalformedURLException, IOException {
Icon[] icons = new Icon[spriteRows * spriteRows];
URL spriteSheetUrl = new URL(spriteSheetSpec);
BufferedImage spriteSheet = ImageIO.read(spriteSheetUrl);
double wD = (double) spriteSheet.getWidth() / spriteRows;
double hD = (double) spriteSheet.getHeight() / spriteRows;
int w = (int) wD;
int h = (int) hD;
for (int i = 0; i < spriteRows; i++) {
for (int j = 0; j < spriteRows; j++) {
int x = (int) (i * wD);
int y = (int) (j * hD);
BufferedImage img = spriteSheet.getSubimage(x, y, w, h);
icons[j * spriteRows + i] = new ImageIcon(img);
}
}
return icons;
}
}
@SuppressWarnings("serial")
class SpriteAnimationPanel extends JPanel {
private static final int TIMER_DELAY = 200;
private Icon[] icons;
private JLabel animationLabel = new JLabel();
public SpriteAnimationPanel(Icon[] icons) {
this.icons = icons;
setLayout(new BorderLayout());
add(animationLabel );
}
public void startAnimation() {
Timer spriteTimer = new Timer(TIMER_DELAY, new ActionListener() {
private int iconIndex = 0;
@Override
public void actionPerformed(ActionEvent arg0) {
animationLabel.setIcon(icons[iconIndex]);
iconIndex++;
iconIndex %= icons.length;
}
});
spriteTimer.start();
}
}
关于java - SwingerWorker 在小程序中用于角色动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270258/
抱歉,问题标题含糊不清!我有一个 ASP.NET 应用程序,可与其他第三方软件配合使用(Burning Glass - 通过 tcp/ip 连接到 Web 应用程序,需要 - 正确配置的 dns 条目
我正在开展一个项目,将一个大型网站分解为更小、更具体的网站。我需要能够将对这些网站的访问限制为仅具有必要权限的用户,并且希望尽可能利用现有的成员资格/角色数据模型。 因此,理想情况下,我想将潜在的多个
抱歉,问题标题含糊不清!我有一个 ASP.NET 应用程序,可与其他第三方软件配合使用(Burning Glass - 通过 tcp/ip 连接到 Web 应用程序,需要 - 正确配置的 dns 条目
我对 FOSUserBundle 中的角色有点困惑。用户实体也有角色列,我们可以通过它为用户分配多个角色。根据发布在 Managing users/roles/groups in FOSUserBun
原谅我的新手问题,但我想按顺序执行三个任务并在剧本中使用两个角色: 任务 角色 任务 角色 任务 这是我到目前为止(任务,角色,任务): --- - name: Task Role Task ho
在触发器中,我想检查哪些角色对 USER() 有效,而不是 CURRENT_USER()。(认识到 CURRENT_USER() 返回触发器的 DEFINER)。 是否有任何类型的 USER_ROLE
我有一套Ansible playbooks 和主要的 yml 文件是这样的 - hosts: all roles: - common - install_nginx 我想在触发剧本
因此,我有以下代码输出安装的所有功能和角色: Import-Module ServerManager $Arr = Get-WindowsFeature | Where-Object {$_.Inst
我已经寻找了一段时间,并且已经手动完成了角色和权限的许多部署,但是有什么方法可以在Sitecore中为角色/权限创建一个程序包(或等效程序包)? 当您没有选择从一个环境到另一个环境进行完全部署时,使用
我想找到或创建一个与所有者或至少贡献者具有相同功能的 azure 角色。但此角色不应该有权创建 azure 资源。 我一直在浏览现有的预定义角色。 最佳答案 这在 Azure RBAC 上下文中没有任
我在文档中找不到答案,也找不到示例:是否可以在 role/defaults/ 中命名除 main.yml 之外的文件?我的意思是,main.yml 是具有默认值的文件的唯一有效名称吗? 最佳答案 根据
我尝试了kubectl get sa default命令,但只看到一些非常基本的值。在k8s中查看与特定服务帐户关联的权限/角色的命令是什么? 最佳答案 以下命令可能会有所帮助。它基本上获得RoleB
有没有办法告诉 Spring 在我制作的自定义用户 bean 中找到用户的角色? http://static.springsource.org/sprin...ns-config.html 因此,如果
在我的 playbook 中运行几次 Play 后,我想验证我的应用程序的部署。 在我的角色之一中,我有以下任务,将创建的 ec2 实例添加到“已启动”的主机: - name: Add new ins
我按如下方式将用户添加到角色(请注意,我在我的机器上运行下面显示的代码): Roles.AddUserToRole(oMU.UserName, "Role1"); 使用以下代码我检查用户是否在
我目前在为 postgresql 创建角色时遇到问题,这是我已经做过的,但自昨晚以来取得了任何进展 simplybel@simplybel:~$ sudo -u postgres createuser
一个项目现在有超过 200 个类,每个文件一个类,将它们划分到目录中似乎是恰当的。现在我正在考虑两种不同的策略; a) 按角色或层分组 repositories/ UserRepository
您如何为用户、角色和应用特定实体提供种子?似乎 IdentityModel 以它自己的上下文为目标? internal sealed class Configuration : DbMigration
摩尔庄园手游在六一儿童节上线之后,网上的争议声还是很多的,有夸赞的,称其找回了童年的回忆,也有吐槽的,觉得3d的设计很晕,没有以前的感觉,想要删除账号,那么大家知道怎么去注销吗,步骤流程是什么样的?
在 XP SP2 虚拟机中运行 Oracle 11gR1。完全披露:这是一项任务。 我试图在用户被授予 DBA 角色时进行审计,并在事件发生时发送电子邮件。 我相信命令 AUDIT DBA;将审核对
我是一名优秀的程序员,十分优秀!