Jetez un coup d'oeuil dans la source et vous comprendrez de quoi il s'agit... Pas trop de commentaire !!!!
Source / Exemple :
/*
*
- Created on Dec 8, 2009, 4:33:04 PM
- /
package jeux;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.shape.Circle;
import javafx.scene.paint.Color;
import javafx.scene.Group;
import javafx.util.Math;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;
import javafx.animation.Interpolator;
import javafx.scene.input.MouseEvent;
import javafx.scene.effect.GaussianBlur;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import java.lang.Void;
import javafx.scene.Node;
import javafx.util.Sequences.indexOf;
var ui = Escobar_GameUI{};
var opacite = 1.0;
ui.jouezbar.visible = true;
ui.joueztxt.visible = true;
ui.gameovbar.visible = false;
ui.gameovtxt.visible = false;
ui.acme.visible = false;
def WIDTH = 455;
def HEIGHT = 370;
def RADIUS = 20;
var gunLeft = false;
var gunRight = false;
var scene: Scene;
var circles : Circle [] = [];
var timelines : Timeline[];
var level = bind score / 10;
var levelTimes = [1s, 0.9s, 0.7s, 0.6s, 0.5s, 0.4s];
var circ : Circle;
var score : Integer;
var lives : Integer = 5 on replace {
if (lives == 0) {
for (t in timelines){
t.stop();
ui.jouezbar.visible = false;
ui.joueztxt.visible = false;
ui.gameovbar.visible = true;
ui.gameovtxt.visible = true;
player.stop();
};
}
};
var stage:Stage = Stage {
resizable: false
scene: scene = Scene {
content:
Group {
content: [ui,
Text {
font : Font {
size : 16
}
fill:Color.WHITE
x: 10
y: 35
content: bind "{score}"
},
Text {
font : Font {
size : 16
}
fill:Color.WHITE
x: 329
y: 35
content: bind "{level}"
},
Text {
font : Font {
size : 16
}
fill:Color.WHITE
x: 162
y: 35
content: bind "{lives}"
},
Group {
content: bind circles
effect: bind if (lives == 0) GaussianBlur { radius: 10 } else null;
},
]
}
}
}
function createCircle() : Void {
def x = Math.random() * 300;
var circ : Circle = Circle {
centerX: x, centerY: 0
radius: RADIUS
fill: Color.BLACK
stroke:Color.WHITE
strokeWidth:2
onMousePressed: function (evt: MouseEvent) : Void {
if (lives > 0) {
delete circ from circles;
score++;
createSmashAnimation(circ.centerX, circ.centerY);
}
}
}
insert circ into circles;
var move = Timeline {
repeatCount: 1
keyFrames : [
KeyFrame {
time: 10s
values: [
circ.centerY => scene.height tween Interpolator.EASEOUT
]
action: function () {
if (indexOf(circles, circ) != -1) {
delete circ from circles;
lives--;
}
}
}
]
};
move.play();
insert move into timelines;
}
function createSmashAnimation(x: Number, y : Number) : Void {
var particles = for (i in [0 .. 10]) Circle {
centerX: x, centerY: y
radius: 4
fill:Color.WHITE
}
insert particles into circles;
for (particle in particles) {
def xTarget = x + (Math.random() - .5) * scene.width/4;
def yTarget = y + (Math.random() - .5) * scene.height/4;
Timeline {
repeatCount: 1
keyFrames : [
KeyFrame {
time: 1s
values: [
particle.centerX => xTarget,
particle.centerY => yTarget
]
action: function() {
delete particle from circles;
}
}
]
}.play();
}
}
var createCircleTimeLine = Timeline {
repeatCount: Timeline.INDEFINITE
keyFrames : [
KeyFrame {
time :bind if (level < sizeof levelTimes)
levelTimes[level]
else
levelTimes[sizeof levelTimes - 1]
canSkip : true
action: createCircle
}
]
};
createCircleTimeLine.play();
insert createCircleTimeLine into timelines;
var player = MediaPlayer {
repeatCount: javafx.scene.media.MediaPlayer.REPEAT_FOREVER
media : Media {
source: "{__DIR__}clip.mp3"
}
volume:0.2
}player.play();
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.