自从JavaOne大会推出JavaFX后,我一直比较关注这个项目,它是一种利用Java的脚本技术,功能上近似于Flash。 它的优势在于,Flash虽有很好的功能和普及度,但它永远不能交付Java类库的大部分功能,而 JavaFX可以。因为也给了JavaFX一个“可能性”上的生存空间。

但是由于JavaFX推出的太晚,兼之文档较少,很多人还是对其望而止步,干等下去也不是办法。所以我最近空闲时会写一些JavaFX的小例子以作练习之用。

import javafx.ui.*;
import javafx.ui.canvas.*;
//圆点渐变过滤器
class CircleTransition extends CompositeNode ...{
  //设定参数项 变量名:类型
    attribute r: Number;
    attribute d: Number;
    attribute w: Number;
    attribute h: Number;
    attribute xp: Number;
    attribute img: Image;
}
//为参数赋值
attribute CircleTransition.r  = -45;
attribute CircleTransition.d  = 16;
attribute CircleTransition.w  = 320;
attribute CircleTransition.h  = 240;
attribute CircleTransition.xp = -w;
//注入过滤器参数
function CircleTransition.composeNode() = Group ...{
  content:[Clip ...{
  //注入shape
    shape: Rect ...{ x:0, y:0, width:w, height:h },
    //设定偏移
    transform: translate(10, 40),
    //注入Group
    content: Group ...{
    //加载ImageView用以显示图像
      content: [ImageView ...{
        transform: translate(-60, -30),
        p_w_picpath: this.img,
        //分段绘制图像
      }, Subtract ...{
        shape1: Rect ...{ x:0, y:0, width:w*4, height:h*4 },
        fill:orange,
        //bind
        transform: bind [rotate(r, 0, h), translate(-w+xp, 0)],
        shape2: Union ...{
          content: [foreach (j in [0..w/d], i in [0..h/d*2]) Circle ...{
            radius: j,
            cx: w-j*d,
            cy: i*d,
          }, Rect ...{
            x:-w, y:0, width:w+w/2, height:h*2,
          }]
        }
      }],
    }
  }, View ...{
    content: GroupPanel ...{
     var row = Row ...{alignment: BASELINE}
     var column1 = Column ...{}
     var column2 = Column ...{}
     //鼠标设为默认
      cursor: DEFAULT
      rows: [row]
      columns: [column1, column2]
      content: [SimpleLabel ...{
        row: row
        column: column1
        text: "操作:"
      }, Button ...{
        row: row
        column: column2
        opaque: false
        mnemonic: T
        text: "变更图像"
        action: operation() ...{
            xp = [0,d..w*2] dur 2000;
        }
      }]
    }
  }
]};
Frame ...{
  title  : "JavaFX - 图像渐变效果1"
  width  : 350
  height : 350
  content: Canvas ...{ content: CircleTransition...{img: ...{ url: "p_w_picpath.jpg" }} }
  centerOnScreen: true
  visible: true
};

效果图:

第一次写代码的感觉就是效率太慢……

由解释到执行的效率比Swing还不能令人忍受(当然,有代码优化的余地,但还是太慢)

且抛去效率问题不提,桌面JavaFX现在还有一个比较关键的问题,那就是如何部署。对于从前没有安装过JRE的用户来说,JRE体积太大,而且现在从浏览器上进行按需安装(如使用Java Start Web等)的用户体验也不是特别好。

目前Sun的官方解决思路是为JRE引入一种新型的部署模型,初次下载时体积非常小,只有在需要时才下载其他的JRE组件。但是具体的效果如何,我们还需拭目以待。

PS:如果Windows能普及jre该有多好啊……

转载于:https://blog.51cto.com/cping1982/130165

JavaFx实现-渐变效果之一相关推荐

  1. 烦死人的JavaFX警告,终于解决了

    WARNING: Loading FXML document with JavaFX API of version xx by JavaFX runtime of version xx 这个格式的Ja ...

  2. 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果

    使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...

  3. JDK11使用IDEA,配置JavaFX

    JDK11使用IDEA,配置JavaFX 1.下载javaFX相关的包 2.在实际Demo中试验哪里少了添加哪里 导入lib文件夹,之后点击OK 配置VMoption 配置成功 3.运行,大功告成 1 ...

  4. JavaFX项目jar使用javafxpackager生成exe

    2019独角兽企业重金招聘Python工程师标准>>> JavaFX项目jar使用javafxpackager生成exe 编译JavaFX生成可执行jar 新建文件夹test1,将第 ...

  5. R语言gganimate包创建可视化gif动图、可视化动图:创建动态散点图动画基于transition_time函数、使用shadow_wake函数配置动画的渐变效果(gradual falloff)

    R语言gganimate包创建可视化gif动图.可视化动图:创建动态散点图动画基于transition_time函数.使用shadow_wake函数配置动画的渐变效果(gradual falloff) ...

  6. android 滑动模糊渐变,Android UI效果实现 滑动模糊渐变效果实现

    大家应该都看到过iOS7解锁屏幕的滑动模糊渐变效果,好了,现在可以把手纸收起来了,今天黄老师就给大家讲一下如何在Android平台上 实现类似的滑动模糊渐变效果,其实方式远比你想像的简单. 目标效果展 ...

  7. 像素颜色JavaFX示例--简易图片处理工具

    文章结束给大家来个序程员笑话:[M] 声明:   本博客文章原创类别的均为个人原创,版权所有.载转请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http:/ ...

  8. javaFX中解决填充(拉伸)问题

    1.margin设置实现 在项目过程中,遇到此问题,如图: 如果窗口缩小,HBox(左边的包含TitledPane那部分)看不到底部 如果窗口拉大,下面就出现空白,HBox高度没拉神 办法:对包含HB ...

  9. JavaFX打包工具(javafxpackager)

    2019独角兽企业重金招聘Python工程师标准>>> 首先创建一个JavaFX文件,Hello World package test;import javafx.applicati ...

最新文章

  1. 【新】欢庆网自动搜索请柬console方法,面对多种网站改版的情况
  2. 为jqgrid添加统计金额页脚
  3. 在 Java 中高效使用锁的技巧--转载
  4. oracle 并行提交,如何配置Oracle并行处理(上)
  5. STL6大标准库的关系和作用
  6. 《响应式Web设计性能优化》一2.1 性能度量基础
  7. java与java ee_Java EE 7社区调查结果!
  8. 12个JavaScript技巧
  9. android 延时摄影,当「延时摄影」和「镜头慢放」结合,手机视频从未有如此质感……#Android&iOS...
  10. java scjp 试题_JAVA认证:78道SCJP考试试题精解
  11. linux驱动_设备驱动_问题定位_vivo_pd1932_音量键
  12. 下载instagram
  13. 【qcom msm8953 android712】rtc 调试分析续
  14. 领你走进10位管理大师的思想境界
  15. DOS命令:diskpart
  16. halcon学习_超人启蒙班10-20课
  17. 国庆第七天的一些杂感
  18. 深度学习(12):SemanticKITTI论文翻译与学习
  19. eChars实现哈尔滨市区县地图展示
  20. 辞职两年:自由的代价

热门文章

  1. VTK:相互作用之RubberBand2DObserver
  2. VTK:相互作用之CallBack
  3. VTK:Filtering之VectorFieldNonZeroExtraction
  4. C语言选择排序Selection sort算法(附完整源码)
  5. C++ const详解
  6. QT的QMutableLinkedListIterator类的使用
  7. QT的QLineSeries类的使用
  8. QT的QHistoryState类的使用
  9. base环境卸载python_20小时快速学习python数据分析实践1——相关软件一系列安装和基本操作熟悉(第0-1h)...
  10. html点击波,Material Design风格按钮点击波动画效果