Java究竟怎么玩?

天地程序已定棋,人间大数待变局

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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: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();
    


posted on 2007-12-19 10:11  cping  阅读(843)  评论(0编辑  收藏  举报