ein Referat von Marcus Rohrmoser,
dem Kopf hinter
aladin-software.mobi.
Anmerkung zu dieser Wiki Seite:
Manches hier sieht in Layout und Farbe ein wenig seltsam aus, da es in erster Linie bei der Präsentation passen muß.
Als Präsentationswerkzeug habe ich das Dokuwiki S5 Plugin gewählt, da's mir am einfachsten schien und komplett ohne Flash/Office/etc. auskommt. Ein moderner Web-Browser genügt.

2D Scenegraph
API für Java und .Net,
Spezialitäten:
-
-
ist
recht alt und wurde in 2 1/2 Sprachen (Java/C#/C# Mobile) implementiert ⇒ konzeptionell sehr ausgereift,
zur Laufzeit synthetisierte (komplexe) 2D Graphiken,
veränderliche Bildinhalte,
veränderliche Bildausschnitte und Effekte.
Bildelemente finden (z.B. mit der Maus klicken) aka. „Object Picking“
jar einbinden (ideal per Maven Dependency)
PCanvas in eine Komponente (JFrame) einfügen
Scenegraph aufbauen und in PCanvas einhängen
Controller als Event Handler in PCanvas einhängen
public static void main(final String[] args) {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final PCanvas canvas = new PCanvas();
frame.add(canvas);
// Scenegraph:
final Model model = new Model();
final PNode world = createScene(model);
canvas.getLayer().addChild(world);
// Controller:
canvas.addInputEventListener(new Controller(model, world));
frame.setSize(600, 700);
frame.setVisible(true);
}
private static final PNode createScene(final Model m) {
final PNode torso;
PNode tmp;
final PNode universe = new PNode();
universe.addChild(torso = load("/torso.png"));
universe.addChild(load("/hand.png"));
torso.addChild(load("/kopf.png"));
torso.addChild(load("/linker_arm.png"));
torso.addChild(tmp = load("/linkes_bein.png"));
tmp.addChild(load("/linker_fuss.png"));
torso.addChild(load("/rechter_arm.png"));
torso.addChild(tmp = load("/rechtes_bein.png"));
tmp.addChild(load("/rechter_fuss.png"));
return universe;
}
public void mousePressed(final PInputEvent arg0) {
p0.setLocation(arg0.getPosition());
pull0 = pull;
// super.mousePressed(arg0);
}
public void mouseDragged(final PInputEvent arg0) {
arg0.setHandled(true);
final double _dy = arg0.getPosition().getY() - p0.getY();
setPull(pull0 + _dy / dy);
}
unter anderem:
Eine umfassendere Liste: