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")的形式。
大体上先想起这么多,继续写个例子:


























































































































