JavaFX屬于腳本語言,并且也采取了弱類型進行數據處理,具體對應關系如下:
例子:
// var s = "Hello";
// s.toUpperCase(); // 結果 "HELLO";
// s.substring(1); // 結果 "ello";
// var n = 1.5;
// n.intValue(); // 結果 1
// (1.5).intValue(); // 結果 1
// s.substring(n); // 結果 "ello"
// var b = true;
// b instanceof Boolean; // 結果 true
這種方式雖然減少了類型轉換的煩惱……但也影響解釋速度,個人不是太認可……(而且在JavaFX中,很多還是需要轉換類型的……)
JavaFX腳本為多種多樣的操作提供了聲明式、無中間程序邏輯的語法,這些操作包括創建2D動畫、設置屬性或者聲明在模式和視圖對象之間的綁定依賴關系。
JavaFX以operation代替了Function,換湯不換藥,無視中……
還有‘+’已無法在JavaFX中連接字符串用,需要寫成如"Hello ".concat("World")的形式。
大體上先想起這么多,繼續寫個例子:
/**
* <p>
* Title: LoonFramework
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/

import javafx.ui.*;
import javafx.ui.canvas.*;

import java.util.*;
import java.lang.System;
import java.lang.Thread;

//JavaFX Java
//String java.lang.String
//Boolean java.lang.Boolean
//Number java.lang.Number
//Integer byte,short,int,long,BigInteger
// var s = "Hello";
// s.toUpperCase(); // 結果 "HELLO";
// s.substring(1); // 結果 "ello";
// var n = 1.5;
// n.intValue(); // 結果 1
// (1.5).intValue(); // 結果 1
// s.substring(n); // 結果 "ello"
// var b = true;
// b instanceof Boolean; // 結果 true

class CircleModel{
attribute x: Number;
attribute y: Number;
attribute r: Number;
attribute c: Color;
}

class CircleDraw extends CompositeNode{
attribute tags: CircleModel*;
//javafx的操作和c++類似需要提前聲明,否則會[No such function]
operation makeing();
}

//實現composeNode操作
operation CircleDraw.composeNode() {
return Group{
content: [
//遍歷tags
foreach(t in tags)
Circle {
//綁定
cx: bind t.x
cy: bind t.y
radius: bind t.r
fill: bind t.c
}
]
};
}

//實現makeing操作
operation CircleDraw.makeing(){
var rand = new Random();
for (unitinterval unit in dur -1){
for(t in tags){
if(t.r == 0 and rand.nextInt(100) > 95){
//產生隨機坐標
t.x = rand.nextInt(400) + 40;
t.y = rand.nextInt(400) + 40;
t.r = 4;
//變換color
t.c = rgba: Color(
rand.nextInt(256),
rand.nextInt(256),
rand.nextInt(256),
rand.nextInt(128) + 64
);
}
//類Basic語法也成……
t.r = if (t.r > 200) or (t.r == 0) then 0 else t.r + 4;
}
//延遲
Thread.sleep(50);
}
}

var tagContainer = CircleDraw{
tags: foreach(i in [0..15])CircleModel{}
};

Frame{
title: "JavaFX - 隨機畫圓"
centerOnScreen: true
//javafx也可使用通常java類
onClose: operation(){
System.exit(0);
}
width: 430
height: 430
resizable: false
content:
//背景設置
Canvas {
background: black
content: tagContainer
}
visible: true
}
//執行操作
tagContainer.makeing();
| JavaFX | Java |
|---|---|
String |
java.lang.String |
Boolean |
java.lang.Boolean |
Number |
java.lang.Number |
Integer |
byte,short,int,long,BigInteger |
例子:
// var s = "Hello";
// s.toUpperCase(); // 結果 "HELLO";
// s.substring(1); // 結果 "ello";
// var n = 1.5;
// n.intValue(); // 結果 1
// (1.5).intValue(); // 結果 1
// s.substring(n); // 結果 "ello"
// var b = true;
// b instanceof Boolean; // 結果 true
這種方式雖然減少了類型轉換的煩惱……但也影響解釋速度,個人不是太認可……(而且在JavaFX中,很多還是需要轉換類型的……)
JavaFX腳本為多種多樣的操作提供了聲明式、無中間程序邏輯的語法,這些操作包括創建2D動畫、設置屬性或者聲明在模式和視圖對象之間的綁定依賴關系。
JavaFX以operation代替了Function,換湯不換藥,無視中……
還有‘+’已無法在JavaFX中連接字符串用,需要寫成如"Hello ".concat("World")的形式。
大體上先想起這么多,繼續寫個例子:
/**
* <p>
* Title: LoonFramework
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @email:ceponline@yahoo.com.cn
* @version 0.1
*/
import javafx.ui.*;
import javafx.ui.canvas.*;
import java.util.*;
import java.lang.System;
import java.lang.Thread;
//JavaFX Java
//String java.lang.String
//Boolean java.lang.Boolean
//Number java.lang.Number
//Integer byte,short,int,long,BigInteger
// var s = "Hello";
// s.toUpperCase(); // 結果 "HELLO";
// s.substring(1); // 結果 "ello";
// var n = 1.5;
// n.intValue(); // 結果 1
// (1.5).intValue(); // 結果 1
// s.substring(n); // 結果 "ello"
// var b = true;
// b instanceof Boolean; // 結果 true
class CircleModel{
attribute x: Number;
attribute y: Number;
attribute r: Number;
attribute c: Color;
}
class CircleDraw extends CompositeNode{
attribute tags: CircleModel*;
//javafx的操作和c++類似需要提前聲明,否則會[No such function]
operation makeing();
}
//實現composeNode操作
operation CircleDraw.composeNode() {
return Group{
content: [
//遍歷tags
foreach(t in tags)
Circle {
//綁定
cx: bind t.x
cy: bind t.y
radius: bind t.r
fill: bind t.c
}
]
};
}
//實現makeing操作
operation CircleDraw.makeing(){
var rand = new Random();
for (unitinterval unit in dur -1){
for(t in tags){
if(t.r == 0 and rand.nextInt(100) > 95){
//產生隨機坐標
t.x = rand.nextInt(400) + 40;
t.y = rand.nextInt(400) + 40;
t.r = 4;
//變換color
t.c = rgba: Color(
rand.nextInt(256),
rand.nextInt(256),
rand.nextInt(256),
rand.nextInt(128) + 64
);
}
//類Basic語法也成……
t.r = if (t.r > 200) or (t.r == 0) then 0 else t.r + 4;
}
//延遲
Thread.sleep(50);
}
}
var tagContainer = CircleDraw{
tags: foreach(i in [0..15])CircleModel{}
};
Frame{
title: "JavaFX - 隨機畫圓"
centerOnScreen: true
//javafx也可使用通常java類
onClose: operation(){
System.exit(0);
}
width: 430
height: 430
resizable: false
content:
//背景設置
Canvas {
background: black
content: tagContainer
}
visible: true
}
//執行操作
tagContainer.makeing();

浙公網安備 33010602011771號