Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 383|回复: 0

[JavaFx学习]JavaFx实现随机图形绘制(二)

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-12 23:50:37 | 显示全部楼层 |阅读模式
    javaFX属于脚本语言,并且也采取了弱类型进行数据处理,具体对应关系如下:  
       
         
          
          JavaFX
          Java
          
          
         
    1. String
    复制代码

         
    1. java.lang.String
    复制代码

          
          
         
    1. Boolean
    复制代码

         
    1. java.lang.Boolean
    复制代码

          
          
         
    1. Number
    复制代码

         
    1. java.lang.Number
    复制代码

          
          
         
    1. Integer
    复制代码

         
    1. 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();
         
      

      
      



      
      
       
       

         
       

         
       
      
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-26 07:00 , Processed in 0.378654 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表