2014-03-02 55 views
0

描述:如何延遲現場顯示的數據?

我有一個StackPane作爲父容器(顯示器)和我的部件延伸地區並保持在的ConcurrentLinkedQueue。組件的顯示不是問題,即使動畫工作正如我想要的與時間軸同步(時間軸記錄整個過程,例如2分鐘 - >圓形彈出以及一些衰落+過渡等)。直到現在都很好。

現在我的問題來了:首先,我想要消耗並播放此組件以從顯示屏和隊列中將其刪除。

第二件事,現在當我運行這個,我有兩個組件,他們在同一時間並行運行,即使他們從隊列輪詢(我不明白)。所以我需要一些延遲或等待,直到第一個組件被播放,然後刪除這個組件並播放下一個組件。

任何建議都會很棒!

 //show message 
    public void showMessages() { 
      while(!messageQueue.isEmpty()) { 
        playMessage(messageQueue.poll()); 
      }  
    } 

    /** 
    * Searches for the source and target component, finds the connection points and prepares the message to be played 
    * @param mess Visual message node, that will appear on dashboard 
    * If no source and target component will be found this will return without doing anything 
    */ 
    public void playMessage(MessageNodeVGT mess) { 
      //get the source and the target of the message 
      CompNodeVGT source=getComponent(mess, SOURCE); 
      CompNodeVGT target=getComponent(mess, TARGET); 
      if(source==null || target == null) { 
        return; 
      } 
      Point2D sourcePoint=get2DPoint(source.impl_getShape(),target.impl_getShape()); 
      Point2D targetPoint=get2DPoint(target.impl_getShape(),source.impl_getShape()); 
      mess.setSourceCoordinates(sourcePoint); 
      mess.setTargetCoordinates(targetPoint); 
      instance.getChildren().add(mess.createPath()); 
      instance.getChildren().add(mess); 
      mess.play(); 
    } 
+0

對於你的第一個問題,你不能從* PARENT *節點中刪除組件嗎?對於你的第二個問題,向我們展示一些代碼! – ItachiUchiha

+0

我從父級中刪除組件,但在完成動畫之前將其刪除。關於代碼:該項目相當大,我會嘗試回來一些相關的代碼。 – Edwin

+0

我可以在哪裏刪除組件的代碼? – ItachiUchiha

回答

0

由於這樣的事實,我有兩個時限(一般一個爲整個應用程序和一個本地的動畫/ S)鎖或其他技術沒有幫助。這就是爲什麼:

1日本土動漫〜3秒(持續時間)

第二本土動漫〜3秒(持續時間)

一般時間表:| ----- 10S 20S ---- --- x-x2 --- ..

假設x = 22s = 2200毫秒,這是第二個動畫在x2時彈出的第一個動畫,如果這個x2在1毫秒-1000毫秒之間(甚至更多)我會將此視爲平行事件,即使這並非完全正確。

我做了什麼?我只是暫停了一般時間線,直到第一個動畫完成,然後在setOnFinish上我只是恢復了一般時間線。

這不是一個完美的答案,因爲實際上,如果您想要在實時追蹤某個事件,那麼在這種情況下您會失去一些時間。

我願意接受其他解決方案,希望這對他人也有幫助。