2017-02-01 1 views
0

私はAnchor Propertyをアンカーペインから取得してバインディングやアニメーションを行う方法は?

aPane.leftAnchorProperty(child); 

を使用して新しいです。KeyValueを作成するanchorpane leftAnchorPropertyを取得しようとしていた。しかし、それは働いていません。誰かが私を助けてくれますか?

私のコード、

Animation a = new Timeline(new KeyFrame(
Duration.seconds(2), new KeyValue(MyAPane.leftAnchorProperty(child), 10) 
)); 
+1

あなたのコードをもっと共有して、そのコードをどのように使用しようとしているのか分かりますか? – Drazisil

+0

もちろん、編集しています。 –

+0

レイアウト( 'AnchorPane')内の' Node'の位置を知りたいと思いますか?レイアウトプロパティ(layoutx/y)やノードのローカル境界に重点を置き、コンテナのローカル境界に集中しない場合は、 –

答えて

1

値はpropertiesObservableMapに格納されているのでそのようなプロパティはありません。

は、しかし、あなたのケースで、あなただけあなたが簡単に自分自身を実装することができWritableValueを、必要があります(。AnchorPaneの子供だけがそれを必要とするが、Nodeがに追加することができ、他のレイアウトがあるので値が、そこに保存されています):

WritableValue<Double> writable = new WritableValue<Double>() { 

    @Override 
    public Double getValue() { 
     return AnchorPane.getLeftAnchor(child); 
    } 

    @Override 
    public void setValue(Double value) { 
     AnchorPane.setLeftAnchor(child, value); 
    } 

}; 

// a starting value for the animation is important, since otherwise interpolation won't work 
AnchorPane.setLeftAnchor(child, 0d); 

ただし、translateXプロパティの使用を検討してください。これはよりシンプルになります...

+0

Writable Valueに関する詳細情報を提供するように頼んだら、simpleXXXXPropertiesなどよりも遅くなるのですか? –

+0

これはここで使用されている単なるインターフェイスです。通常はプロパティを取得または設定するためのメソッドが含まれています。プロパティ自体:https://docs.oracle.com/javase/8/javafx/api/javafx/beans/value/WritableValue.htmlしかし、これはAnchorPaneのプライベートメンバーを使用せずにこれを行う唯一の方法です。マップ内の値のキー。 – fabian

+0

よく知られているプロパティに関するパフォーマンスはどうですか? –

関連する問題