`
傅庆岩
  • 浏览: 90560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JavaFX应用的改善技术

阅读更多

    我有个习惯,就是很多东西都习惯往桌面上仍,然后等桌面满了在清理,不过还好我每次都把桌面的文件打开查看一下有没有必要备份到相关目录,今天看到了个鸡肋,备份不太值得,删了又可惜,放上来暂存。

    当时研究javafx,这方面资料太少,前几天去书店,就两本书,一个就是javafx本质论,另一个是ria客户端javafx方面的,本质论都翻烂了,看了看ria那本译本,也是基础知识,感慨sun被收购后,javafx注定也是后娘养的了。当初在oracle网站看了一个程序员大姐写的应用技术方面的改善,总结了一下写到了word文档里了,因为我英文水平有限,说是翻译确实有点侮辱人家文章了,自己的理解吧,如果你正在应用javafx做一些东西,下面这些建议对于优化你程序的有一定的参考意义:

  

 

1 尽量避免使用反锯齿

使用反锯齿会出现更加复杂的翻译。 为此,除非它是真正地需要的,否则应该关闭反锯齿。Smoothshape的属性,所有继承于shape的子类都具有smooth属性。

例如,一个长方形,除非需要它进行旋转,否则使用smooth是完全没有必要的

Circle {

     clip: Rectangle {

         smooth: false

     }

  }

 

2图片的使用技巧

当图象对象被创造时,它请求以下行为:

a装载文件

b分配图象内存

c解码图象格式

对于相同的图画,我们应该用复用的方式来进行调用,以避免重复的进行图像初始化操作

例如,下例实现了图片的复用

var node: Node;

var img: Image {

   url: "http://my.server.com/image.png"

}

 

Group{

   content: bind [

      node

      ImageView{

         image: img

      }

   ]

}

 

 通过指定图像的高度和宽度,能够有效减少图片的资源消耗。

 

3 时间线的优化 人眼的感知频率是24fr,关键帧设为40ms(25fr)以上即可,如果再高人眼已经不能分辨,所以设为40ms以下以提升频率没有意义。

  def clip = Timeline {

   repeatCount: Timeline.INDEFINITE

   keyFrames:      

      KeyFrame {

         time: 40ms // 25 fps

         action: function () : Void {...}

      }  

}

 

根据显示器刷新来设定,合理设置能够降低CPU使用率

  var t1 = Timeline {

    framerate: 15

    repeatCount : Timeline.INDEFINITE

    autoReverse: true

    keyFrames: [

        at (0s)   { coordX => 0 ; coordY => 450; },

        at (10s) { coordX => 450 ; coordY => 0;  }

    ]

};

 

 

4 Group组策略

比较下面两段代码,一个将效果加到整个Vbox范围内,一个加到Rectangle范围内,实现了同样的效果,但是对于资源节约上,后者有优势。但是这样是针对最小实现,如果一个组内所有元素都需要实现效果,为了保证效果,依然要把效果加到组的范围。我们的目的就是最小化责任单元。

scene: Scene{

    content:

        VBox {

            content: for (i in [1..100])

                HBox {

                    content: for (j in [1..100])

                        Rectangle{

                            width: 100 height: 100 fill: Color.RED

                        }

                }

                effect: DropShadow {}

        }

}

 

 

 

scene: Scene{

    content:

        VBox {

            content: for (i in [1..100])

                HBox {

                    content: for (j in [1..100])

                        Rectangle{

                            width: 100 height: 100 fill: Color.RED

                            effect: DropShadow {}

                        }

                 }

        }

}

 

 

5 缓存机制

主要针对effects效果的操作,但是旋转不支持缓存效果。

 

6 Def  Var

如果是初期化后就不在进行变化的值,最好用def的方式定义。

这个可以参考javafx基础

 

7 Scene

每个场景尽可能的小,不要在一个场景中定义更多的东西。在保证满足功能的前提下,能够提取出的尽量提取出无关组件,对于不需要的组件,尽量从场面图表去remove掉,而不是将visiblefalse,因为属性依然消耗系统资源。

 

8 避免多余的Bind,Bound

数据捆绑是JavaFX一个强有力的特点,使开发人员定义二个变化事物之间的关系。 每当一个关联事物改变,自动地更新另一关联物。 然而,切记使用绑定是相当昂贵的操作。 设法避免多余的捆绑,例如绑定到值不改变的事物。

绑定原则:在必须的时候再用。

 

9 尽量避免用Stroke

  如果你想改变文本的颜色或者画一个具有边框的填充四边形,使用fill而不使用Stroke是个更好的选择,因为这样比通过将一个长方形放到另一个长方形上来获得两个填充的长方形更加快速。(It is faster to render two filled rectangles by placing one rectangle on top of the other.

 

 

分享到:
评论

相关推荐

    javaFx8技术手册

    javaFx8技术手册介绍javaFx8开发桌面应用程序的方法。

    JavaFx应用实例

    JavaFx 应用小实例

    javafx应用不同的css文件

    作了一个例子,使用binding不同的css文件,变换不同的样式。界面比较漂亮。下载完后直接可用netbean6.8打开看效果。

    JavaFX8技术手册

    资源名称:JavaFX 8 技术手册资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    JavaFX API文档

    Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich Internet ...

    GMapsFX, Java API用于在JavaFX应用程序中使用 谷歌地图.zip

    GMapsFX, Java API用于在JavaFX应用程序中使用 谷歌地图 GMapsFX修正的注意:在macosx的GMapsFX中出现的问题。 ! 纯 JavaFX API允许你在不需要与底层 谷歌地图 JavaScript API交互的情况下向你的JavaFX应用程序添加...

    JavaFX的piano应用

    这是一个用JavaFX脚本语言编写的简单应用。

    javafx javafx javafx javafx

    javafx

    JavaFX PDF

    Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich Internet ...

    JavaFX 官方教程:RIA 应用开发

    JavaFX 官方教程:RIA 应用开发

    JavaFX2.0基础教程.pdf

    JavaFX2.0基础教程.pdf

    javaFX桌面应用管理系统

    学生时代JAVA结课设计,团支部管理系统,javaFX实现,数据读取由文件实现,可自由添改

    JavaFX 构建GUI 应用程序

    JavaFX 构建GUI 应用程序 第1 课:JavaFX GUI 简介 第2 课:使用声明性语法 ........ 第8 课:使GUI 元素具有交互

    javafx2.0官方例子

    Sun公司(已于20092008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语 言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative,...

    JavaFX 基础

    JavaFX应用可以无缝地在桌面或者Web浏览器中运行 JavaFX为设备提供多点支持,适用于开发平板或智能手机应 用 JavaFX具有内建的2D、3D和动画支持,以及视频和音频的 回放功能,可以作为一个应用独立运行或者在浏览器中...

    JavaFX拖放操作示例

    关于JavaFX应用中拖放操作的示例代码。

    JavaFX高级教程:部署JavaFX2.0应用

    JavaFX高级教程:部署JavaFX2.0应用 官方中午文档

    JAVAFX官方教程:RIA应用开发

    资源名称:JAVA FX官方教程:RIA应用开发内容简介:《JavaFX官方教程:RIA应用开发》通过使用JavaFX,开发人员和平面设计师可以协同工作来构建健壮的、拟真的应用程序,并能够将它部署到任何地方:桌面、Web、数百万...

    JavaFX:简单的JavaFX应用程序

    JavaFX 简单的JavaFX应用程序

    JavaFX官方教程

    Oracle公司旗下Sun公司在2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script 编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative, ...

Global site tag (gtag.js) - Google Analytics