package tileeditor; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.image.ImageView; import javafx.scene.image.Image; import javafx.scene.CustomNode; import javafx.scene.Group; import javafx.scene.Node; import javafx.geometry.Rectangle2D; import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseButton; def w = 32; def h = 32; var map = [ 7, 3, 3, 3, 3, 3, 3, 3, 3, 8, 19, 26, 40, 41, 24, 13, 13, 23, 24, 19, 19, 36, 50, 51, 34, 2, 2, 2, 34, 19, 19, 2, 2, 2, 2, 2, 2, 2, 25, 19, 19, 57, 58, 44, 45, 46, 2, 2, 35, 19, 27, 3, 3, 6, 55, 56, 5, 3, 3, 38, 19, 60, 13, 16, 47, 48, 15, 13, 61, 19, 19, 70, 1, 33, 1, 1, 1, 1, 71, 19, 19, 1, 1, 1, 1, 1, 1, 1, 49, 19, 17, 9, 9, 9, 9, 9, 9, 9, 9, 18, ]; var tileset = Image { url: "{__DIR__}tiles.png" } def viewports = for (row in [0..9]) { for (col in [0..9]) { Rectangle2D{ minX: col * w, minY: row * h, height: w, width: h } } } var tiles = for (row in [0..9]) { for (col in [0..9]) { ImageView { x: col * w, y: row * h, viewport: bind viewports[map[row * 10 + col]] image: tileset onMouseClicked: function( e: MouseEvent ):Void { var amount = if(e.button == MouseButton.PRIMARY) { 1 } else { -1 }; map[row * 10 + col] = (map[row * 10 + col] + amount) mod 100; } } } } Stage { title: "JavaFX Simple Tile Editor" scene: Scene { content: [ tiles ] } onClose: function() { println(map); } }