JavaFx实现(2)-随机图形绘制
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 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/cping1982/archive/2007/12/19/2258083.html

JavaFx实现(2)-随机图形绘制相关推荐

  1. JavaFx/Java 大作业 五子棋 实验报告

    Java大作业五子棋实验报告 实验目的 通过此次实验,对这一学期学习的内容尤其是界面开发部分做了一个很好的回顾,看似简单的五子棋程序,设计好也确实费了我一点功夫 功能模块简介和系统结构图 ChessG ...

  2. 高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)

    6:高颜值JavaFX数据库-九讲之六 项目效果图 功能点实现 内部优化 类结构示例 创建数据库连接类 1.创建类 2.数据库连接步骤 3.一百个注意事项 4.类的具体实现 5.错误显示的类 后记 高 ...

  3. canvas-应用大全

    前言 去年在公司内部做了一次canvas的分享,或者说canvas总结会更为贴切,但由于一直都因为公事或者私事,一直没有把东西总结成文章分享给大家,实在抱歉~ 分享这篇文章的目的是为了让同学们对can ...

  4. “约见”面试官系列之常见面试题第十一篇之canvas(建议收藏)

    目录 前言 介绍 小试牛刀 应用案例 动画 API介绍 Demo 游戏 三要素 Demo 截图 API介绍 canvas.style.width 和 canvas.width 的区别 Demo 合成图 ...

  5. 函数编程变得简单:Eta来了

    到目前为止,对于我们的JVM系列海盗来说,这确实是一次冒险. 首先,在功能海洋中进行游览,然后在动态海中进行一到两站,甚至是Java群岛的旁游. 今天,我们将在埃塔岛(Eta Island)航行返回功 ...

  6. w3school没有java的教程_javafx w3school教程

    JavaFX教程 - JavaFX线 为了在JavaFX场景上渲染图形,我们需要基本的形状和颜色. Node类是所有JavaFX场景图形节点的基本基类.它提供了转换,翻译和应用效果到任何节点的能力. ...

  7. [JavaFX] 绘制简易时钟(一)

    效果图 用当前时间创建时钟,绘制表盘. 钟表是静止的.让指针动起来,请参照:绘制简易时钟(二) 主函数文件 ShowClock: package primier; import javafx.appl ...

  8. JavaFX战旗类游戏开发 第二课 游戏地图绘制

    在上一节课中,我们对即将要完成的战旗Demo有了一个大概的了解,本节课当中,我们将会学习绘制游戏地图. 自从在JavaFX 2.2中增加了Canvas相关的功能,我们就可以使用Canvas来实现游戏绘 ...

  9. Javafx 时钟绘制

    Javafx 时钟绘制 具体效果如下: 核心为三个函数: 第一个为 public void dials,绘制表盘 第二个为public void scale,绘制刻度,这里需要注意的是字体旋转 第三个 ...

  10. java中有ClockPane类吗,JavaFX实现简易时钟效果(二)

    本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 在前一篇博客中,我们已经绘制了一个静止时钟. 首先进行一个微调:让表盘根据窗口大小自动调整大小: 在 ShowCl ...

最新文章

  1. NeuIPS|在知识图谱上嵌入逻辑查询
  2. aix java home_在AIX环境下安装IBM JDK 1.6的教程
  3. mysql所有表查询
  4. json-lib-2.1-jdk15.jar
  5. cultureinfo 类 java_System.Globalization.CultureInfo.cs(示例代码)
  6. SAP License:整理的SAP参数文件
  7. [leetcode周赛]1346. 检查整数及其两倍数是否存在
  8. 谈到电影,我们收获了什么
  9. 车载电子瞬态浪涌保护用瞬态抑制TVS二极管,如何正确选型?
  10. 将旧硬盘的内容克隆到新硬盘
  11. TeamViewer一直显示“未就绪”什么原因?
  12. 内容创业赛道分野,2018紧,2019更紧
  13. win7计算机不能设置双屏怎么回事,告诉你win7怎么设置双屏显示
  14. Roaring 20s(还有一些《A ConvNet for the 2020s》读后感)
  15. vue使用百度地图获取位置信息
  16. WebSocket connection to ‘ws://XXX‘ failed: Error during WebSocket handshake报错
  17. java @around,Spring AOP基于注解的Around通知
  18. Eclipse SVN文件对比详解
  19. 计算机组成原理中J1J3是什么,计算机组成原理第一次实验报告.doc
  20. 杰理之EQ常见问题【篇】

热门文章

  1. WPF学习(一)--布局控件简介
  2. 字节流和字符流的读写
  3. Arcgis Javascript API 开发笔记
  4. 不能说的秘密-重载、重写与继承中的构造方法
  5. Luogu1095 守望者的逃离
  6. java中的内部类_Java中成员内部类的使用
  7. 在mdk使用swd最后一步无反应_STM32应用笔记: 使用STM32CubeMonitor实时监测变量
  8. android tv tts,TTS发音问题
  9. odp.net连接oracle9i 出错解决_架构师成长之路:Kafka连接器深度解读之错误处理和死信队列...
  10. maven配置项目根路径_Java的项目构建工具Maven的配置和使用教程