我从静态上下文引用的非静态变量有一些问题,我不知道如何更改我的方法来解决它。静态和非静态问题
第一个是这个,这是应该的射手已经在发射时刻的位置产卵子弹:
World.addObject(new bulletH(), (int)posX , (int)posY);
而且去除子弹,当他们离开这个世界没有按触发“T工作:
if(posX<0 || posX> getWorld().getWidth() || posY <0 || posY > getWorld().getHeight()){
World.removeObject(this);
我真的很感激它,如果你能帮助我与这些问题的,让我明白了,我怎么能绕过这个错误。
//编辑
类英雄
import greenfoot.*;
import java.util.List;
import java.awt.Rectangle;
public class Hero extends alive
{
private double mspeed = 100.0;
private long frameBegin = 0;
private double posX;
private double posY;
private boolean isJumping = false;
private double maxJumpTime = 0.35;
private double jumpTime = 0;
private double jspeed = 250.0;
private double fspeed = jspeed;
private boolean faceR;
private int hoch = 30;
private int breit = 26;
private boolean onCD = false;
private long CD = 0;
public Hero() {
}
public void addedToWorld(World world) {
posX = getX();
posY = getY();
faceR = true;
}
public static void schuss(){
/*World.addObject(new bulletH(), (int)posX , (int)posY);
if(faceR=true){
bullet.firedR=true;
}
else{
bullet.firedR=false;
}
*/
}
public Rectangle getBounds(){
return new Rectangle((int)posX, (int)posY, breit,hoch);
}
public void act(){
double deltaTime;
if(frameBegin == 0) {
deltaTime = 0;
}
else{
deltaTime = ((double) (System.currentTimeMillis()-frameBegin))/1000;
}
frameBegin = System.currentTimeMillis();
if(Greenfoot.isKeyDown("A")){
posX -= mspeed * deltaTime;
faceR = false;
}
if(Greenfoot.isKeyDown("D")){
posX += mspeed * deltaTime;
faceR = true;
}
if(Greenfoot.isKeyDown("W") && !getIntersectingObjects(Floor.class).isEmpty()) {
isJumping = true;
jumpTime = 0;
}
if((!Greenfoot.isKeyDown("W") || (jumpTime > maxJumpTime)) && isJumping) {
isJumping = false;
}
if(isJumping) {
posY -= jspeed * deltaTime;
jumpTime += deltaTime;
}
if(getIntersectingObjects(Floor.class).isEmpty() && !isJumping) {
posY += fspeed *deltaTime;
}
if(Greenfoot.isKeyDown("Space")) {
if(onCD = false){
schuss();
onCD = true;
}
}
if(posY > getWorld().getHeight()){
Greenfoot.setWorld(new gameover());
}
setLocation((int)posX, (int)posY);
CD += deltaTime;
if(CD> 0.3){
CD=0;
onCD = false;
}
}
}
类子弹
import greenfoot.*;
import java.awt.Rectangle;
public class bullet extends Actor
{
public int mspeed = 250;
public boolean firedR = true;
public long frameBegin = 0;
public int yspeed = 0;
public int posX;
public int posY;
private int hoch = getImage().getHeight();
private int breit = getImage().getWidth();
public void addedToWorld(World world) {
posX = getX();
posY = getY();
}
public Rectangle getBounds(){
return new Rectangle((int)posX, (int)posY, breit,hoch);
}
public void move(){
double deltaTime;
if(frameBegin == 0) {
deltaTime = 0;
}
else{
deltaTime = ((double) (System.currentTimeMillis()-frameBegin))/1000;
}
frameBegin = System.currentTimeMillis();
if(firedR=true){
posX += mspeed * deltaTime;
}
else{
posX -= mspeed * deltaTime;
}
posY+= yspeed * deltaTime;
setLocation((int)posX, (int)posY);
}
public void act(){
}
}
如果您向我们展示哪些变量是静态的,哪些是非静态的,以及确切地说“不起作用”的含义,这可能会有所帮助。 – merlin2011
哪些变量是**静态**,哪些变量是**非静态**? – Gundamaiah
posX/posY是非静态的,其余的应该是静态的。 – user3556111