2017-05-23 8 views
0

TimelinesJavaFX隣接するタイムラインにジャンプする方法は?

List<Timeline> timelines = new ArrayList<>(); 

timelinetimelinesの要素)の値に初期化コレクション短いつぶやきです。各timelineの構成についてのスニペットは、すべてのtimelineは、我々は10件のつぶやきを持って、合計で仮定KeyFrame

// offset is adjusted according to msg length 
Text tweet = new Text(offset, displayHeight - 15, tweetBody); 

// set timeline 
Timeline ti= new Timeline(); 
ti.setCycleCount(1); 
ti.setAutoReverse(false); 
// stop at a place where users cannot see 
KeyValue kv = new KeyValue(tweet.xProperty(),-10 - mesLength); 
// playtime is defined according to msg length 
KeyFrame kf = new KeyFrame(Duration.millis(playtime), kv); 
tl.getKeyFrames().add(kf); 
timelines.add(ti); 

が付属しています注意してください。上記の10個のタイムラインを繰り返し作成し、適切なX位置(tweet1:offset 800、tweet2:offset 1800、tweet3:offset 2500など)とチェーンし、すべてのタイムラインを同時に実行します。つまり、すべてのつぶやきが視野外に初期化されます。

たとえば、この写真では、すべてのツイートが初期化されていますが、表示されていません。 enter image description here

クリックRunenter image description here

メッセージがenter image description here

まずメッセージでキックは、第二のメッセージが始まる終了enter image description here

私は何をプレイしています:

timelines.forEach(Animation::play) 

を、隣接するツイートに切り替える方法timelinesNextPrevious menuItemを使用しています。

MenuItem nextControl = new MenuItem("Next"); 
fasterControl.setOnAction(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent event) { 
     // I want to use jumpTo but didn't figure it out 
     // timelines.forEach(timeline -> timeline.jumpTo(Duration.)); 
    } 
}); 

つぶやきが実行されたら、ウィンドウを空に戻す方法。 enter image description here

明確化および/またはコードが必要な場合は、私にお知らせください。

+0

タイムライン上で別のツイートに切り替えるとはどういう意味ですか?特定のツイートに特定のポジションを持たせたいと言っていますが、タイムラインはスクロールし続けていますか? – matt

+0

つぶやきはすべて 'timeline'で何らかの順序で連鎖しています。私は' timelines'コレクション 'timelines.forEach(Animation :: play)'を再生しています。私は現在のつぶやきから 'next'と' previous'を使って隣人に切り替えたいと思っています。 – GabrielChu

+0

「ツイートの切り替え」はどうなりますか? – matt

答えて

0

1つのプロパティを変更するだけです。リストを保存する

List<Text> tweets = new ArrayList<>(); 

次に、現在のテキストを表すフィールド/変数があります。

Text current; 

ハンドルには、現在のインデックスがあり、タイムラインを取得しています。

public void handle(ActionEvent event) { 

     if(current!=null){ 
      TimeLine tl = timeLines.get(0); 
      current = tweets.get(0); 

      tl.stop(); 
      tl.getKeyFrames().clear(); 
      //set the display values eg the x value to zero. 
      tl.play(); 

     } else{ 
      int index = tweets.indexOf(current); 
      TimeLine oldLine = timeLines.get(index); 
      //stop the timeline, clear the old keyframes. 
      //create a new keyvalue, keyframe that hides this text, and play the timeline. 

      index = (index+1)%tweets.size(); 
      TimeLine line = timeLines.get(index); 
      current = tweets.get(index); 
      //create a new keyvale/keyframe that shows this text, and play the time line. 
     } 
} 
関連する問題