# Flash Animation SWF in Java absielen



## Batikan (9. Apr 2009)

Hallo Liebe Freunde. 

Gibt es eine Möglichkeit, eine Flash animation (swf) in Java Applikation einzubinden.
Es geht darum ein Spiel in Java Apllikation einzubauen.

LG


----------



## 0x7F800000 (9. Apr 2009)

Batikan hat gesagt.:


> Gibt es eine Möglichkeit, eine Flash animation (swf) in Java Applikation einzubinden.


Ziemlich sicher nicht. Bei offenen Formaten wie SVG könnte man sich noch Hoffnung machen, dass es vielleicht einer zum Spaß halbwegs standardkonform in Java implementiert hat, um damit Animationen wiederzugeben (wovon ich bisher nichts gehört habe...) aber bei Flash wäre es einfach ein unverhältnismäßig gigantischer und sinnloser Aufwand, diesen komischen proprietären swg-format auseinanderzunehmen und dafür einen player zu implementieren.
 Außerdem wäre es doch eh ein verlorener Kampf von Anfang an, kein Mensch würde es schaffen blind gegen Adobe auf ihrem Kampfgelände anzukommen, das ist doch quatsch... Und wer braucht denn bitte irgendeinen teilweise funktionierenden swg-player in java, wenn es immer einen fertigen & top aktuellen bei adobe kostenlos gibt? Du wärst wohl ungefähr der erste ???:L


> Es geht darum ein Spiel in Java Apllikation einzubauen.


und wieso sollte man so etwas denn machen? Ein spiel in Flash zu basteln und dann in java reinzuquetschen ist ungefähr genauso sinnvoll, wie einem Fisch eine Haartransplantation zu machen und das Bellen beizubringen, um ihn dann als Hund zu verkaufen ???:L


----------



## Marco13 (9. Apr 2009)

Mit dem zweiten Teil hat Andrey recht, mit dem ersten Teil nicht so ganz: Mit The DJ project kann man theoretisch und prinzipiell Flash in Java einbinden.....


----------



## Antoras (9. Apr 2009)

In eclipse ist bereits ein Browser enthalten, der Flash abspielen kann:
[HIGHLIGHT="Java"]import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class SWTBrowserExample {

	private Shell shell = null;
	private Browser browser = null;

	private static final String url = "http://www.youtube.com";
	private static final String title = "SWTBrowserExample";

	public static void main(String[] args) {
		Display display = new Display();
		SWTBrowserExample browser = new SWTBrowserExample();
		browser.createBrowser();
		browser.shell.open();

		while (!browser.shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}			
		}
		display.dispose();
	}

	private void createBrowser() {		
		shell = new Shell();
		shell.setLayout(new FillLayout());
		shell.setSize(new Point(800, 800));
		shell.setLocation(new Point(100, 100));
		shell.setText(title);

		browser = new Browser(shell, SWT.BORDER);
		browser.setUrl(url);
	}

}[/HIGHLIGHT]
Das Ding basiert auf der SWT-Webkit-Engine. 
Wenn es nur darum geht Flash bzw. Webseiten allgemein mit Java darzustellen, dann ist dieser Browser ziemlich genial. Wie der allerdings genau funktioniert kann ich dir nicht sagen.


----------



## 0x7F800000 (9. Apr 2009)

Marco13 hat gesagt.:


> Mit dem zweiten Teil hat Andrey recht, mit dem ersten Teil nicht so ganz: Mit The DJ project kann man theoretisch und prinzipiell Flash in Java einbinden.....


Nice Try... Bei solchen Sachen sehe ich aber irgendwie eher schwarz, da sind schon wesentlich sinnvollere Projekte nach einer Weile eingegangen ;(

Und letztendlich tut es ja auch nichts anedres, als irgendeinen browser aufzurufen, der den nativen flash-plugin aufruft der die swf abspielt... Was soll es mir bringen? Warum nimmt man nicht einfach Firefox... ???:L Naja, egal... kA.


----------



## Wildcard (9. Apr 2009)

Antoras hat gesagt.:


> Wenn es nur darum geht Flash bzw. Webseiten allgemein mit Java darzustellen, dann ist dieser Browser ziemlich genial. Wie der allerdings genau funktioniert kann ich dir nicht sagen.


Das ist so nicht richtig. Der SWT Browser embedded einen System Browser. Bei Windows ist das immer der IE, auf Linux Systemen wird es mit XUL Runner gelöst (also Mozilla), bei Mac Safari.
Flash kann also auch nur dann angezeigt werden, wenn du in diesem Browser ein Flash Plugin installiert hast.


----------



## ice-breaker (9. Apr 2009)

0x7F800000 hat gesagt.:


> [...] aber bei Flash wäre es einfach ein unverhältnismäßig gigantischer und sinnloser Aufwand, diesen *komischen proprietären swg-format auseinanderzunehmen* und dafür einen player zu implementieren.


Adobe hat Mai 2008 das Dateiformat der Flash-Files (swf) veröffentlicht 


also mir würde da spontan der JFlashPlayer wie gut der allerdings ist, und auf was er basiert, habe ich nicht die geringste Ahnung.


----------



## Empire Phoenix (9. Apr 2009)

Von deren Seite:

call Java methods from Flash with ExternalInterface.call 
call Flash functions from Java with ExternalInterface.addCallback 
install Flash if it is not already present

daher würde ichd arauf wetten das der Letztendlich auch nur irgewie das Bwoser plugin aufruft (evtl diekt ohne browser, da bin ich net sicher).


----------



## ice-breaker (10. Apr 2009)

ich habe mir mal das demojar angesehen, also es wird kein browser aufgerufen, scheinbar, die gehen wohl den JNI-Weg und sprechen wahrscheinlich direkt mit dem installierten Flash.

Das externalInterface ist ein Flash-Feature um mit einem Container ausserhalb von Flash zu sprechen, normalerweise macht man das um mit Js zu kommunizieren, mit Java zu kommunizieren ist nicht vorgesehen, also muss da wohl was eigenes entwickelt worden sein


----------



## Batikan (13. Apr 2009)

Hallo Danke für den Tip. Habe das DJ Project heruntergeladen und mehr oder weniger erfolgreich in eclipse eingebunden. Folgendes habe ich gemacht: Die Jar Dateien DJNativeSwing-SWT.jar DJNativeSwing.jar als externe Jar Files in mein Projekt referenziert. Diese Jar Files sind gelichzeitig in meinem Projektordner. (Projekt->Properties->Java Build Path->Libaries->AddExternalJars)

Versuche das Beispiel mit dem JFlashPlayer: Habe keine Fehlermeldung, also die Klassen werdne schon erkannt!

Problem: 
1.package chrriis.dj.nativeswing.swtimpl; wird im Intelli Sense erkannt aber er meckert mit :The declared package "chrriis.dj.nativeswing.swtimpl" does not match the expected package ""   

2. Nach dem Kompilieren kommt eine Ausnahme: 
Exception in thread "main" java.lang.IllegalStateException: The version of SWT that is required is 3.5M6 or later!
	at chrriis.dj.nativeswing.swtimpl.NativeInterface.initialize(NativeInterface.java:149)
	at chrriis.dj.nativeswing.swtimpl.NativeInterface.open(NativeInterface.java:182)
	at SimpleFlashExample.main(SimpleFlashExample.java:36)

Ist die einbindung korrekt, was mache ich hier falsch das diese Sache nicht funktioniert. Hoffe, dass jemand damit schonmla gearbeitet hat und mir weiterhelfen kann!

Danke


----------



## Empire Phoenix (13. Apr 2009)

NativeInterface, hm wen du swt eingebunden hast, haste an die native pfade gedacht?


----------



## Batikan (13. Apr 2009)

Hi!
Was sind die nativen pfade?
Kenne mich da noch nicht gut aus 

?


----------



## Spacerat (13. Apr 2009)

1. Für Flash hab' ich interessehalber mal ein bissl gegoogled und da kam das dabei heraus...
Java/SWF

2. Für das von 0x7F800000 erwähnte SVG gibts "Batik"...
Batik SVG Toolkit


----------



## Batikan (13. Apr 2009)

Danke für die Vorschläge, jedoch würde ich gerne das DJ Projekt benutzen, da ich dies mehr oder weniger schon implementiert habe. Die Nativen pfade beim SWT ??? Was muss ich Tun ???


----------



## Wildcard (13. Apr 2009)

> 2. Nach dem Kompilieren kommt eine Ausnahme:
> Exception in thread "main" java.lang.IllegalStateException: The version of SWT that is required is 3.5M6 or later!


Welche Version von SWT hast du denn?


----------



## Empire Phoenix (14. Apr 2009)

Batikan hat gesagt.:


> Danke für die Vorschläge, jedoch würde ich gerne das DJ Projekt benutzen, da ich dies mehr oder weniger schon implementiert habe. Die Nativen pfade beim SWT ??? Was muss ich Tun ???



Hm ne sorry, Swt bracht gar keine nativen krams, die haben ja für die Betreibssysteme verschidene jars.


----------



## Batikan (14. Apr 2009)

Danke für die Tips!
Das Anzeigen hat nun nach langem ausprobieren geklappt 

Hier eine kurze Beschreibung: 
1. Die Jars DJNativeSwing und DJNativeSwing-SWT als externe Archive zum Projekt hinzufügen. Bei Eclipse: Rechte Maustate auf das Projekt -> Build Path -> Add External Archive
2. Die Datei swt-3.5M6-win32-win32-x86 von der Seite SWT: The Standard Widget Toolkit (Development) herunterladen und anschließend als zip in das Projekt "importieren". Rechte Maustaste auf das Projekt -> Importieren
3. Die DJNativeSwing-Demo.jar aufrufen, die sich im Ordner der Libary befindet und den JFlashPlayer anklicken, dessen Quellcode entnehmen und pfad anpassen. 

So kann man eine swf Datei in einem Java Frame darstellen.

LG


----------



## Marco13 (19. Apr 2009)

Um das mal nebenbei zu erwähnen: Gut, dass du die Lösung jetzt noch gepostet hast :toll: sonst würden vermutlich andere durch die Suchfunktion diesen Thread finden, und dann enttäuscht feststellen, dass keine endgültige, einfache Lösung drinsteht...


----------



## Batikan (19. Apr 2009)

Ja so kann man es auch sehen


----------

