PDA

View Full Version : [JavaFX] Disegnare una scacchiera


UnknownSoldier
06-07-2010, 20:25
Salve a tutti! Sto cercando di imparare ad usare JavaFX e per questo sto provando a disegnare una scacchiera... bene, ho disegnato la scacchiera, però il problema è che le caselle vengono SEMPRE disegnate dopo qualsiasi elemento vado ad aggiungere, ad esempio un'immagine, che non vedo...
Ho usato una classe esterna per la Scene per cercare di dividere il più possibile il codice divisibile.

Qualche idea?

Main.fx
package javafxapplication2;

import javafx.stage.Stage;
import javafx.scene.image.Image;

Stage {
title: "Application title"
scene: Chessboard {
width: 400, height: 400
content: [
DraggableImage {
x: 0, y: 0
image : Image {
url:"http://www.google.it/intl/en_com/images/srpr/logo1w.png"
}
}
]
}
}

Chessboard.fx
package javafxapplication2;

import javafx.scene.Scene;
import javafx.scene.shape.Rectangle;
import javafx.scene.paint.Color;

public class Chessboard extends Scene {
def squareSize = if (width == height) width / 8 else 0;

init {
for(i in [0..7]) {
for(j in [0..7]) {
insert Rectangle {
x: i*squareSize, y: j*squareSize
width: squareSize, height: squareSize
fill: if((i + j) mod 2 == 0) Color.ALICEBLUE else Color.SKYBLUE
} into content;
}
}
}
}

DraggableImage.fx
package javafxapplication2;

import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;

public class DraggableImage extends ImageView {
var dx;
var dy;

override var onMousePressed = function(e : MouseEvent) : Void {
dx = e.x - x;
dy = e.y - y;
println(scene.content);
}
override var onMouseDragged = function(e : MouseEvent) : Void {
x = e.x - dx;
y = e.y - dy;
}
}

UnknownSoldier
07-07-2010, 14:27
Nessuno? :(