Gra dynamiczna i biblioteka Swing

0

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

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();

1 użytkowników online, w tym zalogowanych: 0, gości: 1