JavaFX Script Media Example[]
It is a compiler version of Enabling Video Files in JavaFX Applications example.
The sample requires Java Media Framework (JMF) library.
import javafx.ui.*;
import javafx.ui.canvas.*;
import javafx.ui.animation.*;
import java.net.URL;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JComponent;
import javax.media.Manager;
import java.lang.System;
public class JavaWidget extends Widget{
attribute comp: Component;
protected function createComponent():JComponent{
var panel = new JPanel();
panel.add(comp);
return panel;
}
}
public class MediaNode extends CompositeNode {
attribute xpos: Number;
attribute ypos: Number;
attribute url: String;
attribute autoPlay: Boolean;
public function composeNode(): Node{
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
var player = Manager.createRealizedPlayer(new URL(url));
if (autoPlay) {
player.start();
}
return Group{
content: View{
content: BorderPanel{
center: JavaWidget { comp: player.getVisualComponent() }
bottom: JavaWidget { comp: player.getControlPanelComponent() }
}
}
transform: Transform.translate(xpos, ypos)
onMouseDragged: function(e: CanvasMouseEvent) {
xpos += e.localDragTranslation.x;
ypos += e.localDragTranslation.y;
}
}
}
}
Frame {
title: 'Media Example'
width: 400
height: 300
onClose: function() { System.exit(0); }
content: Canvas {
content: [
MediaNode{
xpos: 0.0
ypos: 0.0
url: "https://www.dev.java.net/files/documents/6929/89419/test.mov"
autoPlay: true
},
MediaNode{
xpos: 100.0
ypos: 100.0
opacity: 0.5
url: "https://www.dev.java.net/files/documents/6929/89418/test.avi"
autoPlay: true
},
]
}
visible: true
}