mirror of
https://github.com/aNNiMON/HotaruFX.git
synced 2024-09-19 14:14:21 +03:00
149 lines
2.4 KiB
Markdown
149 lines
2.4 KiB
Markdown
HotaruFX
|
|
========
|
|
|
|
Programming language for creating animations
|
|
|
|
[![Build Status](https://travis-ci.org/aNNiMON/HotaruFX.svg?branch=master)](https://travis-ci.org/aNNiMON/HotaruFX)
|
|
|
|
|
|
![App running on Linux Mint](art/screenshot.png)
|
|
|
|
|
|
## Demo
|
|
|
|
![Logo](art/logo.gif)
|
|
|
|
```java
|
|
composition(320, 57, 25, "#2F2F2F")
|
|
|
|
LOGO = text({
|
|
x: -2135,
|
|
y: 0,
|
|
valign: "CENTER",
|
|
text: 'HotaruFX',
|
|
fill: '#FDFD42',
|
|
font: 800,
|
|
css: '
|
|
-fx-font-weight: bold;
|
|
-fx-effect: dropshadow(three-pass-box, rgba(100,183,3,0.8), 68, 0, 0.5, 0.25);
|
|
'
|
|
})
|
|
|
|
LOGO@fill
|
|
.add(2 sec, "#82fd42", easeOut)
|
|
.add(4 sec, "#FDFD42", ease)
|
|
|
|
render(LOGO)
|
|
```
|
|
|
|
![Font icons](art/love-github.gif)
|
|
|
|
```java
|
|
composition(1280, 720, 50)
|
|
|
|
LOVE = text({
|
|
x: -80
|
|
y: 0
|
|
valign: "CENTER"
|
|
text: "\uf004"
|
|
fill: '#cf1010'
|
|
font: 200
|
|
opacity: 0
|
|
})
|
|
LOVE.scaleX = LOVE.scaleY = 0
|
|
LOVE@scaleX
|
|
.add(100 ms, 1.0, easeIn)
|
|
.add(400 ms, 1.4, easeOut)
|
|
.add(800 ms, 1.1, easeOut)
|
|
LOVE@scaleY
|
|
.add(100 ms, 1.0, easeIn)
|
|
.add(400 ms, 1.4, easeOut)
|
|
.add(800 ms, 1.1, easeOut)
|
|
LOVE@opacity
|
|
.add(350 ms, 1, easeIn)
|
|
.add(600 ms, 1, hold)
|
|
.add(800 ms, 0, easeOut)
|
|
|
|
GITHUB = text({
|
|
x: -45
|
|
y: 0
|
|
valign: "CENTER"
|
|
text: "\uf09b"
|
|
fill: 'white'
|
|
font: 150
|
|
})
|
|
GITHUB@fill
|
|
.add(600 ms, 'white', hold)
|
|
.add(800 ms, '#cf1010', easeOut)
|
|
GITHUB@opacity
|
|
.add(1.2 sec, 1, hold)
|
|
.add(1.5 sec, 0, easeOut)
|
|
|
|
render(LOVE GITHUB)
|
|
```
|
|
|
|
![Text clip](art/hotarufx-clip.gif)
|
|
|
|
```java
|
|
composition(1280, 720, 30)
|
|
|
|
CLIP = circle({
|
|
cx: 400,
|
|
cy: 0,
|
|
radius: 80
|
|
})
|
|
|
|
TEXT = text({
|
|
x: -220,
|
|
y: 0,
|
|
text: "HotaruFX",
|
|
fill: "white",
|
|
stroke: "black",
|
|
font: 100,
|
|
valign: "CENTER",
|
|
underline: true,
|
|
clip: CLIP,
|
|
css: '
|
|
-fx-effect: dropshadow(two-pass-box, rgba(0,0,0,0.8), 5, 0, 0.5, 0.25);
|
|
'
|
|
})
|
|
|
|
CLIP@cx
|
|
.add(1.2 sec, -210, easeOut)
|
|
.add(3 sec, 0, ease)
|
|
CLIP@radius
|
|
.add(1.2 sec, 80, discrete)
|
|
.add(3 sec, 300, ease)
|
|
TEXT@fill
|
|
.add(3 sec, 'white', hold)
|
|
.add(4 sec, '#D6EA2A', easeOut)
|
|
|
|
render(CLIP, TEXT)
|
|
```
|
|
|
|
See other examples in [examples folder](app/src/main/resources/examples) or in `File -> Open Example` menu.
|
|
|
|
|
|
## Build
|
|
|
|
```
|
|
./gradlew shadowJar
|
|
```
|
|
|
|
Build requires JDK 11 or higher and Java FX support. Assembled binaries are stored in `app/build/libs` directory.
|
|
|
|
|
|
## Run
|
|
|
|
```
|
|
./gradlew run
|
|
```
|
|
|
|
Application requires JRE 11 or higher and Java FX support.
|
|
|
|
## License
|
|
|
|
Apache 2.0. See [license information](LICENSE).
|
|
|
|
|