JavaFx实现(2)-随机图形绘制
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();
转载于:https://www.cnblogs.com/cping1982/archive/2007/12/19/2258083.html
JavaFx实现(2)-随机图形绘制相关推荐
- JavaFx/Java 大作业 五子棋 实验报告
Java大作业五子棋实验报告 实验目的 通过此次实验,对这一学期学习的内容尤其是界面开发部分做了一个很好的回顾,看似简单的五子棋程序,设计好也确实费了我一点功夫 功能模块简介和系统结构图 ChessG ...
- 高颜值数据库项目实战MySQL+JavaFX+Fxml+CSS(完整精讲解版+源代码)(六)
6:高颜值JavaFX数据库-九讲之六 项目效果图 功能点实现 内部优化 类结构示例 创建数据库连接类 1.创建类 2.数据库连接步骤 3.一百个注意事项 4.类的具体实现 5.错误显示的类 后记 高 ...
- canvas-应用大全
前言 去年在公司内部做了一次canvas的分享,或者说canvas总结会更为贴切,但由于一直都因为公事或者私事,一直没有把东西总结成文章分享给大家,实在抱歉~ 分享这篇文章的目的是为了让同学们对can ...
- “约见”面试官系列之常见面试题第十一篇之canvas(建议收藏)
目录 前言 介绍 小试牛刀 应用案例 动画 API介绍 Demo 游戏 三要素 Demo 截图 API介绍 canvas.style.width 和 canvas.width 的区别 Demo 合成图 ...
- 函数编程变得简单:Eta来了
到目前为止,对于我们的JVM系列海盗来说,这确实是一次冒险. 首先,在功能海洋中进行游览,然后在动态海中进行一到两站,甚至是Java群岛的旁游. 今天,我们将在埃塔岛(Eta Island)航行返回功 ...
- w3school没有java的教程_javafx w3school教程
JavaFX教程 - JavaFX线 为了在JavaFX场景上渲染图形,我们需要基本的形状和颜色. Node类是所有JavaFX场景图形节点的基本基类.它提供了转换,翻译和应用效果到任何节点的能力. ...
- [JavaFX] 绘制简易时钟(一)
效果图 用当前时间创建时钟,绘制表盘. 钟表是静止的.让指针动起来,请参照:绘制简易时钟(二) 主函数文件 ShowClock: package primier; import javafx.appl ...
- JavaFX战旗类游戏开发 第二课 游戏地图绘制
在上一节课中,我们对即将要完成的战旗Demo有了一个大概的了解,本节课当中,我们将会学习绘制游戏地图. 自从在JavaFX 2.2中增加了Canvas相关的功能,我们就可以使用Canvas来实现游戏绘 ...
- Javafx 时钟绘制
Javafx 时钟绘制 具体效果如下: 核心为三个函数: 第一个为 public void dials,绘制表盘 第二个为public void scale,绘制刻度,这里需要注意的是字体旋转 第三个 ...
- java中有ClockPane类吗,JavaFX实现简易时钟效果(二)
本文实例为大家分享了JavaFX实现简易时钟效果的具体代码,供大家参考,具体内容如下 在前一篇博客中,我们已经绘制了一个静止时钟. 首先进行一个微调:让表盘根据窗口大小自动调整大小: 在 ShowCl ...
最新文章
- NeuIPS|在知识图谱上嵌入逻辑查询
- aix java home_在AIX环境下安装IBM JDK 1.6的教程
- mysql所有表查询
- json-lib-2.1-jdk15.jar
- cultureinfo 类 java_System.Globalization.CultureInfo.cs(示例代码)
- SAP License:整理的SAP参数文件
- [leetcode周赛]1346. 检查整数及其两倍数是否存在
- 谈到电影,我们收获了什么
- 车载电子瞬态浪涌保护用瞬态抑制TVS二极管,如何正确选型?
- 将旧硬盘的内容克隆到新硬盘
- TeamViewer一直显示“未就绪”什么原因?
- 内容创业赛道分野,2018紧,2019更紧
- win7计算机不能设置双屏怎么回事,告诉你win7怎么设置双屏显示
- Roaring 20s(还有一些《A ConvNet for the 2020s》读后感)
- vue使用百度地图获取位置信息
- WebSocket connection to ‘ws://XXX‘ failed: Error during WebSocket handshake报错
- java @around,Spring AOP基于注解的Around通知
- Eclipse SVN文件对比详解
- 计算机组成原理中J1J3是什么,计算机组成原理第一次实验报告.doc
- 杰理之EQ常见问题【篇】
热门文章
- WPF学习(一)--布局控件简介
- 字节流和字符流的读写
- Arcgis Javascript API 开发笔记
- 不能说的秘密-重载、重写与继承中的构造方法
- Luogu1095 守望者的逃离
- java中的内部类_Java中成员内部类的使用
- 在mdk使用swd最后一步无反应_STM32应用笔记: 使用STM32CubeMonitor实时监测变量
- android tv tts,TTS发音问题
- odp.net连接oracle9i 出错解决_架构师成长之路:Kafka连接器深度解读之错误处理和死信队列...
- maven配置项目根路径_Java的项目构建工具Maven的配置和使用教程