简体   繁体   English

从一个班级获得价值

[英]Getting a value from one class to another

private void update(float delta) {

    playerRectangle.setPosition(getX() + velocity.x * delta, 300);

    setX(getX() + velocity.x * delta);

}

So let's say I have the above method in ClassA but I want to use 假设我在ClassA中有上述方法,但我想使用

playerRectangle.setPosition(getX() + velocity.x * delta, 300);

for ClassB, however, delta would not defined in ClassB, so I was wondering how would I get the delta value? 但是,对于ClassB,delta不会在ClassB中定义,因此我想知道如何获取delta值?

*I made getter methods for velocity and playerRectangle in ClassA *我在ClassA中为速度和playerRectangle设置了吸气方法

public class Player extends Sprite implements InputProcessor{

private Vector2 velocity;
private float speed = 500;
private Rectangle playerRectangle, rightRectangle, leftRectangle;

public Player(Sprite sprite){
    super(sprite);
    playerRectangle = new Rectangle(0,0,286,160);
    rightRectangle = new Rectangle(1280,0,0,720);
    leftRectangle = new Rectangle(0,0,0,720);
    velocity = new Vector2(0,0);

}

public void draw(SpriteBatch spriteBatch){
    update(Gdx.graphics.getDeltaTime());
    super.draw(spriteBatch);
}

private void update(float delta) {

    playerRectangle.setPosition(getX() + velocity.x * delta, 300);

    setX(getX() + velocity.x * delta);

}

public Rectangle getPlayerRectangle(){
    return playerRectangle;
}

public Rectangle getRightRectangle(){
    return rightRectangle;
}

public Rectangle getLeftRectangle(){
    return leftRectangle;
}

public Vector2 getVelocity(){
    return velocity;
}

This will do 这会做

ClassA obj= new ClassA();
obj.playerRectangle.setPosition(obj.getX() + obj.velocity.x * obj.delta, 300);

this will only work if all the functions and objects( ie; getx(),velocity.x,delta ) are all public. 仅当所有函数和对象( getx(),velocity.x,delta)全部公开时,这才起作用。

Include a setPlayerRectangle method in your Player class 在Player类中包含setPlayerRectangle方法

public void setPlayerRectangle(Rectangle rectangleObject){
    playerRectangle= rectangleObject;
}

Then 然后

Player playerObj = new Player(spriteObject);
....
....
// Create a new Rectangle object with/without arguments as per your need
Rectangle yourRectangle = new Rectangle();
yourRectangle.setPosition(getX() + playerObj.getVelocity().x *deltaValue, 300);

You didn't mention where is the getX() method defined, if its in the Player class, then write playerObj.getX().. and then set it to playerObj 您没有提到getX()方法在哪里定义,如果它在Player类中,则编写playerObj.getX()..然后将其设置为playerObj

playerObj.setPlayerRectangle(yourRectangle);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM