JavaFX属于脚本语言,并且也采取了弱类型进行数据处理,具体对应关系如下:


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:[email]ceponline@yahoo.com.cn[/email]
 * 
@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; // 结果 trueclass 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();