7. var uteis = ["seg","ter","qua","qui","sex"];
var fds = ["sab","dom"];
var semana = [uteis,fds];
var semana2 = [uteis,["sab","dom"]];
var semana3 = [uteis,"sab","dom"];
7
8. var n = [1..10];
var pares = n[i | i mod 2 == 0];
println(pares);
//[ 2, 4, 6, 8, 10 ]
println(sizeof pares);
//5
8
13. Tudo em JavaFX é uma expressão
loops, condicionais, blocos
Em alguns casos as expressões tem tipo Void.
while, classes
A ultima expressão de um bloco é o retorno
dele.
13
14. var x = {
var a = 5;
a * 2;
};
println(x); //10
14
15. var x = 10; var x = 10; var a : Number;
var a = 0; var a = 0;
if(x > 0){ var b = if(x > 0){ var b = a = 1;
a = 1; a = 1;
}else{ }else{ println(b);//1.0
a = 2; a = 2;
} };
println(a); //1 println(a); //1
println(b);//1
15
16. var x = 0; var x = 0;
while(x < 10){ while(x < 10)
x++; x++;
}
println(x); //10 println(x); //10
16
17. for(i in [1..5]){ var a = for(i in [1..5])
print("[{i}]"); i*i;
} println(a);
//[1][2][3][4][5] //[ 1, 4, 9, 16, 25 ]
var a = [1..5]; var b = for(i in [1,4,9,16,25])
for(i in a) Math.sqrt(i);
print("[{i}]"); println(b);
//[1][2][3][4][5] //[ 1.0, 2.0, 3.0, 4.0, 5.0 ]
17
19. class Conta{
var nome: String;
var numero: Integer;
var saldo = 1000;
init{
}
function deposito(valor: Integer):Void{
saldo += valor;
}
override function toString(){
"Conta({nome},{numero},${saldo})";
}
}
19
20. var conta = Conta{
nome: "Raphael"
numero: 123
};
println(conta);
//Conta(Raphael,123,$1000)
20
21. class MyClass extends Conta {
}
class MyClass extends Serializable {
}
class MyClass extends Conta, Serializable {
}
21
22. mixin class Terrestre{
function andar(){ println("andando"); }
}
mixin class Aquativo{
function nadar(){ println("nadando"); }
}
class Jacare extends Terrestre, Aquativo{ }
var jacare = Jacare{};
jacare.andar();
jacare.nadar();
22
23. default
Visível apenas no script
package
Visível no mesmo pacote
protected
Visível no mesmo pacote ou subclasses.
public
Sem restrições
23
24. public-read
Sem restrição para leitura
Só pode ser escrito dentro do script
Para permissão de escrita:
▪ package public-read
▪ protected public-read
public-init
Pode ser inicializado na criação do objeto, em
outros casos é igual ao public-read
24
25. arquivo MyClass.fx:
public var x = 1;
public class MyClass{
public var y = 2;
}
outro arquivo:
MyClass.x = 0;
var obj = MyClass{};
obj.y = 0;
25
27. class Donut extends CustomNode {
public var x = 0.0;
public var y = 0.0;
public var raioExterno = 10.0;
public var raioInterno = 5.0;
public var fill: Paint = Color.BLACK;
public var stroke: Paint;
...
}
27
28. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 28
29. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 29
30. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 30
31. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 31
32. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 32
33. class Donut extends CustomNode {
...
public override function create(): Node {
Group{
content: bind ShapeSubtract{
a: Circle{radius: raioExterno}
b: Circle{radius: raioInterno}
fill: bind fill
stroke: bind stroke
translateX: bind x
translateY: bind y
}
}
}
} 33
37. Criar um projeto chamado Praticas
Site:
http://sites.google.com/site/joseraphaelmarques/
Link lateral: eventos
Baixar os 4 arquivos no pacote praticas
37
46. Criar um projeto chamado RaceFX
Site:
http://sites.google.com/site/joseraphaelmarques/
Link lateral: RaceFX
Link: Parte 1
Baixar para o pacote racefx:
bluecar.png
redcar.png
Game.fx
46
49. public class Car extends CustomNode{
//posicao
public var x: Number;
public var y: Number;
public var angle: Number;
public var vel: Number;
public-init var image: Image;
//controles
public var left = false;
public var right = false;
public var up = false;
public var down = false;
...
}
49
50. public class Car extends CustomNode{
...
public override function create(): Node {
return ImageView {
image: image
translateX: bind x – 15
translateY: bind y - 7.5
rotate: bind -Math.toDegrees(angle);
};
}
...
}
50
51. public class Car extends CustomNode{
...
function updateTurn(factor: Number):Void{
if(left != right){//xor
var t = if(left) TURN else –TURN;
angle = (angle + t*factor) mod RAD360;
}
}
...
}
51
52. public class Car extends CustomNode{
...
function updateAcel(factor: Number):Void{
if(down){//freiando
vel = Math.max(VMIN, vel - ACEL*factor);
}else if(up){//acelerando
vel = Math.min(VMAX, vel + ACEL*factor);
}else{//desacelerando
if(vel > 0){
vel = Math.max(0, vel - FRICTION*factor);
}else{
vel = Math.min(0, vel + FRICTION*factor);
}
}
}
...
}
52
53. public class Car extends CustomNode{
...
function updateMove(factor: Number):Void{
var vx = Math.cos(angle) * vel * factor;
var vy = -Math.sin(angle) * vel * factor;
var i = x + vx;
var j = y + vy;
x = i;
y = j;
}
...
}
53
54. public class Car extends CustomNode{
...
public function update(time: Long):Void{
var factor = time / 1000.0;
if(factor == 0) return;
updateTurn(factor);
updateAcel(factor);
if(vel != 0){
updateMove(factor);
}
}
...
}
54
56. public class Game extends CustomNode{
public-read var car1 = Car{};
public-read var car2 = Car{};
var lastTime: Long;
function update():Void{}
var timeline = Timeline {}
public function reset():Void{}
public function play(){}
var bg = Rectangle{};
init{}
public override function create():Node{}
}
56
57. public class Game extends CustomNode{
...
public override function create():Node{
Group{
content: [
bg,
car1,
car2,
]
}
}
...
}
57
58. public class Game extends CustomNode{
...
function checkKey(code: KeyCode, value: Boolean){
if(code == KeyCode.VK_LEFT){
car1.left = value;
}else if ...
}
function onKeyPressed(e:KeyEvent):Void{
checkKey(e.code, true);
}
function onKeyReleased(e:KeyEvent):Void{
checkKey(e.code, false);
}
...
}
58