gpt4 book ai didi

java - 实例变量重置其值

转载 作者:太空宇宙 更新时间:2023-11-04 07:02:40 25 4
gpt4 key购买 nike

此代码显示出奇怪的行为。 BaseActor 类只需按顺序调用:initPhysics、initGraphics 和 onCreate(仅一次),然后执行操作(针对每一帧)。预期的行为是,在 onCreate 方法中,我保存 fixX 值(实际上是 -6),以使用该值来设置对象每帧的 X 位置,以使对象的 X 轴静态。我在 onCreate 中放置了一个调试点并执行操作,并且他被适本地调用。当

fixX = getBody().getPosition().x;

他得到了值 6,正如预期的那样,但实际上 fixX 值又回到了 0。当我将 fixX 变量更改为静态时,事情按预期进行。我不明白怎么办。我在 BirdActor 的构造函数上放置了一个 System,以确保该对象仅创建一次。body 的 setTransform 方法是带有 Box2d Engine 的 Libgdx C++ 代码的 Jni 接口(interface)。

public class BirdActor extends BaseActor {


private float fixX = 0;

public BirdActor() {
System.out.println("Created");
}

@Override
protected Body initPhysics() {
return Assets.scene.getNamed(Body.class, "bird").get(0);
}

@Override
protected void onCreate() {
fixX = getBody().getPosition().x;
}

@Override
public void act() {
getBody().setTransform(fixX, getBody().getPosition().y, 0);
super.act();


}

@Override
protected Sprite initGraphics() {
Sprite sprite = new Sprite(Assets.textureBird);
return sprite;
}

}

最佳答案

问题可能是因为您在构造函数中调用了虚拟方法。

所以调用列表是:

1. BaseActor()
2. onCreate() of BirdActor
3. BirdActor() whitch inits the fixX = 0.

因此初始化 fixX 是在 onCreate() 方法之后调用的。尝试删除 fixX 初始化 (= 0)。

关于java - 实例变量重置其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com