Postram sie teraz wyjasnic kilka kluczowych aspektow gwiazdki.
A wiec zaczynajmy.
1. Obiekt Group, pozwala nam wykonywac transformacje na kilku obiektach jednoczesnie
(w tym przypadku sa to 2 obiekty Star)
Dostepne transformacje to
- transform: [translate(x, y)], przesuniecie
- transform: [rotate(kat, x, y)], obrob o dany kat dookola punktu (x,y)
- transform: [scale(x, y)], przeslakalowania
- transform: [skew(x, y)], przekrzywienie
transform: [translate(10, 10), scale(2, 2)]dana grupa zostanie przesunieta o 10px i powiekszona dwukronie
2. Operator bind
Jest to jeden z kluczowych operatorow javyFX, pozwala nam (hmm jak to ujac, nie uzywajac slowa zbindowac) polaczyc ze soba 2 wartosci, w przypadku zmiany jednej, automatycznie zmianie ulega wartosc
drugiej. Najlepiej pokaze to na przykladzie
import javafx.ui.*;
import java.util.Date;
var someText= "TITLE";
var frame = Frame{
width:300
height:100
title: bind someText
visible:true
content:Label{
text:"Get time!"
onMouseClicked: operation(mEvent){
var date = new Date();
someText = "{date.hours}:{date.minutes}:{date.seconds}";
}
}
};
Po kazdym kliknieciu do zmiennej someText przypisywana jest aktualny czas, dzieki zastosowania do tytulu ramki operatora bind, po kazdym kliknieciu jest on aktualizowany.
Do uzyskania aktualnego czasu uzylem klasy z poza JavyFX, stosowanie kodu javy w aplikacji FX przedstawie innym razem.
3. Animacje
Do tworzenia animacji wykorzystujemy operator dur. Jego zastosowanie jest proste jak budowac cepa. Okreslamy przedzial w jakim dana wartosc ma sie zmieniac np x = [1..100] i czas przez ktory ma sie to dokonac np. dur 100, w efekcie x co 1 milisekunde bedzie zwiekszac sie o 1. Po zbindowaniu do wartosci jakiegos pola(np. rozmiaru) uzyskujemy animacje
1 komentarze:
Z tym bindowaniem nie jest tak do końca. JavaFX nie radzi sobie z automatycznym rzutowaniem i zamianą typów (np. Number na String) co powoduje, że trzeba bindować pola o takim samym typie :(
Prześlij komentarz