2015-10-17 3 views
2

Я строю приложение JavaFX, который должен работать на моем RaspberryPi, который прилагается дисплей 7" . Для лучшего стиля я пытаюсь оживить javafx.scene.effect.GaussianBlur -эффект.Animate Рендер эффекты в JavaFX

Я получил он работает, хотя производительность довольно плохая (низкая FPS во время анимации) на данный момент (на моем ноутбуке, даже не говоря о Pi). См. код ниже.

Есть ли более эффективный способ сделать это? Или эти эффекты просто не должны быть анимированы?

GaussianBlur blur = new GaussianBlur(0); 
backgroundPane.setEffect(blur); 
DoubleProperty value = new SimpleDoubleProperty(0); 
value.addListener((observable, oldV, newV)-> 
{ 
    blur.setRadius(newV.doubleValue()); 
}); 

Timeline timeline = new Timeline(); 
final KeyValue kv = new KeyValue(value, 30); 
final KeyFrame kf = new KeyFrame(Duration.millis(200), kv); 
timeline.getKeyFrames().add(kf); 
timeline.play(); 

FYI: bakcgroundPlane на этом этапе только панель с Фоновое изображение добавляется с помощью CSS:

.background 
{ 
    -fx-background-image: url("images/bg.png"); 
    -fx-background-repeat: stretch; 
    -fx-background-size: 800 480; 
    -fx-background-position: center center; 
} 

EDIT: Проблема, кажется, не быть связано с CSS. Это все еще происходит, когда я устанавливаю изображение в FXML ...

+3

Есть ли какая-либо конкретная причина, по которой вы определяете DoubleProperty с помощью changeListener, который вы анималируете, что заставляет изменять радиус? Используйте radiusProperty непосредственно на GaussianBlur. – hotzst

+0

У вас будет больше шансов получить помощь, если вы предоставите [mcve] (http://stackoverflow.com/help/mcve). Я знаю, что у вашего текущего вопроса достаточно информации о том, что кто-то может его реплицировать, но в настоящее время для кого-то это больше работает, чем просто копировать и вставлять минимальный, полный, рабочий, компилируемый код на свою машину. Если потенциальным автоответчикам необходимо больше работать, чтобы воспроизвести вашу проблему, тогда ваш шанс получить хорошие ответы уменьшится. – jewelsea

ответ

1

Вы пытались использовать enable caching и set the cache hint to speedy?

Обычно они оказывают значительное влияние на производительность. На одной из моих маленьких jfx-игр была разница между «воспроизводимыми» и однозначными значениями fps.

+0

Я просто пробовал, но все равно никакой разницы :( – mxcd

Смежные вопросы