0

jMonekyEngine を使い始めましたが、これは Swing GUI と対話する簡単な方法です。こちらのチュートリアルに従ってくださいhttp://jmonkeyengine.org/wiki/doku.php/jme3:advanced:swing_canvas

それはすべて機能し、すべてがロードされますが、変更に問題があります。

彼らのチュートリアルによると、一定の更新はここで行われます:

public void simpleUpdate(float tpf) {
    geom.rotate(0, 2 * tpf, 0);
}

(これはオブジェクトの回転に関するチュートリアルの例です)。私がやろうとしているのは、回転速度を増減することです(Swing GUIのActionListener内で更新される変数で2またはtpfを変更することにより.

ただし、彼らのチュートリアルでは、swing gui は main メソッド内で作成されると述べられているため、変更するには静的な変数を作成する必要があります。

static float rotate = 0.0f;

メインメソッド内で変更されますが、次のように使用しようとすると:

public void simpleUpdate(float tpf) {
    geom.rotate(0, rotate * tpf, 0);
}

初期値に対して一定のままです。GUIを構築するためのGUIクラスを作成して(JPanelを拡張)、ゲッターとセッターを使用しようとしましたが、まだうまくいきません..どんな助けでも大歓迎です!ありがとう!

編集:回転値を変更する方法は次のとおりです。

JButton faster = new JButton("Faster");
faster.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent arg0) {
        rotate +=0.1f;
    }
});

メインメソッド内。回転は静的フィールドです。

4

1 に答える 1

1

これは私のために働いています

http://test.jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_main_event_loop http://test.jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_input_system?s[]=入力

アクション リスナーは本当にクリック時にイベントをトリガーしていますか? 回転変数ではなく、そこに問題がある可能性があります。この例ではスイングを使用していないことに注意してください..

import com.jme3.app.SimpleApplication;
import com.jme3.input.KeyInput;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;

/** Sample 4 - how to trigger repeating actions from the main update loop.
 * In this example, we make the player character rotate. */
public class HelloLoop extends SimpleApplication {

    public static void main(String[] args){
        HelloLoop app = new HelloLoop();
        app.start();
    }

    protected Geometry player;

    @Override
    public void simpleInitApp() {

        Box b = new Box(Vector3f.ZERO, 1, 1, 1);
        player = new Geometry("blue cube", b);
        Material mat = new Material(assetManager,
          "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        player.setMaterial(mat);
        rootNode.attachChild(player);

        initKeys();
    }

    /* This is the update loop */
    @Override
    public void simpleUpdate(float tpf) {
        // make the player rotate
        player.rotate(0, val*tpf, 0); 
    }
    float val = 2f;
    private void initKeys() {
        // Adds the "u" key to the command "coordsUp"
        inputManager.addMapping("sum",  new KeyTrigger(KeyInput.KEY_ADD));
        inputManager.addMapping("rest",  new KeyTrigger(KeyInput.KEY_SUBTRACT));

        inputManager.addListener(al, new String[]{"sum", "rest"});
    }
      private ActionListener al = new ActionListener() {
        public void onAction(String name, boolean keyPressed, float tpf) {
          if (name.equals("sum") ) {
              val++;
          }else if (name.equals("rest")){
              val--;
          }
        }
      };
}
于 2012-05-19T05:20:36.193 に答える