Hallo, ich bin neu hier und von daher wusste ich nicht wirklich wohin mit meinen thread, wenns wo anders besser passt, bitte verschieben ^^ ty
Also, mein ich würde gerne JavaFX teilweise in Java verwenden.
Genauer die Blendeffecte.
Hierfür habe ich folgenden code:
JavaInterface.java
CallFX.java
und meine JavaFX klasse:
LightFX.fx
In meiner LightFX.fx klasse weißt er mich darauf hin das es ein fx script in einen non-javafx project ist.
Aber das ist doch eigendlich egal, oder?
Wenn ich nun mein script starte und CallFX.getLightObject() aufruf, schmeißt er einen fehler raus:
Die dazu gehörende zeile ist also:
Nun meine frage: wieso findet er meine fx klasse nicht? bei java klassen klappt das doch auch.
Liegt es an irgendwelchen einstellungen von meinen project?; oder habe ich etwas am code komplett falsch gemacht?
Also, mein ich würde gerne JavaFX teilweise in Java verwenden.
Genauer die Blendeffecte.
Hierfür habe ich folgenden code:
JavaInterface.java
Java:
package Atramentum;
public interface JavaInterface {
public void make(String filename,float type,float x,float y);
public void render(float shiftX,float shiftY);
}
Java:
package Atramentum;
import javafx.reflect.FXClassType;
import javafx.reflect.FXLocal;
import javafx.reflect.FXLocal.Context;
import javafx.reflect.FXLocal.ObjectValue;
public class CallFX {
public static JavaInterface getLightObject(String filename, float type, float x, float y) {
Context context = FXLocal.getContext();
FXClassType instance = context.findClass("Atramentum.LightFX");
ObjectValue obj = (ObjectValue)instance.newInstance();
JavaInterface ji = (JavaInterface)obj.asObject();
ji.make(filename, type, x, y);
return ji;
}
}
LightFX.fx
Java:
/*
* LightFX.fx
*
* Created on 13.06.2010, 18:48:33
*/
package Atramentum;
/**
* @author Blair
*/
import javafx.scene.*;
import javafx.scene.effect.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
public class LightFX extends JavaInterface {
var img;
var type;
var displayX;
var displayY;
public override function make( filename:String, t:Number, x:Number, y:Number):Void {
img = Image { url : filename};
if(t==0){
type = BlendMode.ADD;
}
else{
type = BlendMode.COLOR_BURN;
}
displayX = x;
displayY = y;
}
public override function render( shiftX:Number, shiftY:Number) : Void {
Group {
blendMode: type
content : [
ImageView {
x: (displayX+shiftX) y: (displayY+shiftY)
image : img
},
]
}
}
}
In meiner LightFX.fx klasse weißt er mich darauf hin das es ein fx script in einen non-javafx project ist.
Aber das ist doch eigendlich egal, oder?
Wenn ich nun mein script starte und CallFX.getLightObject() aufruf, schmeißt er einen fehler raus:
Java:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Atramentum.LightFX
at javafx.reflect.FXLocal$Context.findClass(FXLocal.java:128)
at javafx.reflect.FXLocal$Context.findClass(FXLocal.java:107)
at Atramentum.CallFX.getLightObject(CallFX.java:10)
Java:
FXClassType instance = context.findClass("Atramentum.LightFX");
Nun meine frage: wieso findet er meine fx klasse nicht? bei java klassen klappt das doch auch.
Liegt es an irgendwelchen einstellungen von meinen project?; oder habe ich etwas am code komplett falsch gemacht?