Cześć. Piszę grę dynamiczną, tzn. taką grę, w której gra jednocześnie kilka osób przez sieć i mam pytanie odnośnie bibliotek graficznych, ponieważ Swing nie jest zalecany do tego typu programów, gdyż "działa wolno". (Po naciśnięciu klawisza program ma jak najszybciej odmalować planszę, aktualne położenie zawodników, etc.) Dlatego moje pytanie: co polecacie?
0
0
AWT, JavaFX. Szczególnie ten drugi, bo służy do grafiki i jest całkiem szybki.
0
Aplikacja full screen. Jak praktycznie każda komercyjna gra.
0
A w jaki sposób zaimplementować taką aplikację fullscreen? Dajcie wskazówkę, albo zarzucćie przykładowym linkiem :) Pozdrawiam :)
0
W javaFX fullscreen prezentacja zdjęć:
package pl.koziolekweb.prezentacja;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.Group;
import javafx.scene.image.ImageView;
import javafx.scene.image.Image;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.media.MediaError;
def sH: Float = bind stage.height;
def sW: Float = bind stage.width;
var imgs: Frame[] = [
Frame {
type: Type.IMAGE
url: "file:///home/koziolek/NetBeansProjects/Prezentacja/zdjecia/_MG_0024.JPG"
},
Frame {
type: Type.MOVIE
url: "file:///home/koziolek/NetBeansProjects/Prezentacja/zdjecia/film.flv"
},
Frame {
type: Type.IMAGE
url: "file:///home/koziolek/NetBeansProjects/Prezentacja/zdjecia/_MG_0025.JPG"
},
Frame {
type: Type.IMAGE
url: "file:///home/koziolek/NetBeansProjects/Prezentacja/zdjecia/_MG_0026.JPG"
}
];
var img: Image;
var imv: ImageView = ImageView {
image: bind img
x: 30
y: 30
}
var mda: Media;
var mdp = MediaPlayer {
media: bind mda;
}
var mdv = MediaView {
preserveRatio: true
mediaPlayer: mdp
x: 30
y: 30
fitHeight: sH - 60
fitWidth: sW - 60
}
var onMediaError: function(: MediaError): Void = function (em: MediaError): Void {
mdv.visible = false;
anim.play();
}
/**
* @author koziolek
*/
var stage: Stage = Stage {
title: "Prezentacja"
scene: Scene {
content: [
Group {
content: [
Text {
font: Font {
size: 16
}
x: 10
y: 30
content: "Application content"
}
imv,
mdv
]
}
]
}
fullScreen: true;
resizable: false;
}
var anim: Timeline = Timeline {
repeatCount: (sizeof imgs) + 1
keyFrames: [
KeyFrame {
time: 0.1s
canSkip: true
action: function () {
if (imgs[0].type == Type.IMAGE) {
imv.visible = true;
var tmp = Image {
url: imgs[0].url
}
var tmpH: Float = 0;
var tmpW: Float = 0;
if (tmp.height >= tmp.width) {
tmpH = sH - 60;
tmpW = (sW * tmpH) / sH;
} else {
tmpW = sW - 60;
tmpH = (sH * tmpW) / sW;
}
img = Image {
url: imgs[0].url
height: tmpH
width: tmpW
};
}
if (imgs[0].type == Type.MOVIE) {
anim.pause();
imv.visible = false;
mdp.onError = function (em: MediaError): Void {
mdv.visible = false;
anim.play();
}
mdv.onError = function (em: MediaError): Void {
mdv.visible = false;
anim.play();
}
mda = Media {
source: imgs[0].url
}
mdp.onEndOfMedia = function () {
mdv.visible = false;
anim.play();
}
mdp.play();
}
}
}
KeyFrame {
time: 5s
action: function () {
delete imgs[0];
if (sizeof imgs == 0)
anim.stop();
}
}
]
}
anim.play();