0
@Override
public void onIrEvent(IREvent e) {
    // TODO Auto-generated method stub

}


ardrone.addAttitudeUpdateListener(new AttitudeListener() {
        @Override
        public void attitudeUpdated(float pitch, float roll, float yaw, int altitude) {
        System.out.println("altitude : " + altitude);
        }
    });

2 番目のコンストラクターから変数の高度を取得し、最初のコンストラクターで使用したいと考えています。私はそれを直接使用しようとしましたが、うまくいきませんでした。また、最初のコンストラクター内に2番目のコンストラクターを構築しようとしましたが、機能しませんでした。何か案が?

前にありがとう

4

2 に答える 2

1

を実装する新しいクラスを作成しますAttitudeListeneraltitudeのセッターとゲッター メソッドを持つインスタンス変数を用意し、altitudeそれに応じて最初と 2 番目のコンストラクターで使用します。

例: AttitudeListenerImpl.java 内

class AttitudeListenerImpl implements AttitudeListener
{
    private int altitude;
    public void setAltitude(int altitude)
    {
        this.altitude = altitude;
    }
    public int getAltitude()
    {
        return this.altitude;
    }
    @Override
    public void attitudeUpdated(float pitch, float roll, float yaw, int altitude) 
    {
        setAltitude(altitude);
        System.out.println("altitude : " + altitude);
    }
}

他のコードでの使用:

AttitudeListener alti = new AttitudeListenerImpl();
alti.attitudeUpdated(1.0f,1.0f,1.0f,1);
ardrone.addAttitudeUpdateListener(alti);

@Override
public void onIrEvent(IREvent e) 
{
        // TODO Auto-generated method stub
        //to get the altitude:
         System.out.println("altitude : " + alti.getAltitude()); 

}
于 2013-06-20T08:59:14.980 に答える
0

ここにはコンストラクターがありません。について話しているのAttitudeListenerですか?この場合、このインターフェースを実装するクラスを作成する必要があります。

次にできることは、次のようなコンストラクターの連鎖です。

public class MyAttitudeListener implements AttitudeListener
{
    public MyAttitudeListener()
    {
        this(3); // this is like new MyAttitudeListener(3);
    }
    public MyAttitudeListener(int altitude)
    {
        // do some work
    }        
}

どのような目標を達成しようとしているのか、さらに説明していただけますか?

于 2013-06-20T09:04:22.900 に答える