当前位置: 首页 > 科技观察

Java8新特性探索(十三)JavaFX8新特性及2048游戏的开发

时间:2023-03-11 21:49:47 科技观察

JavaFX主要致力于富客户端开发,弥补swing的不足,主要提供图形库和媒体库,支持音频、视频、图形、动画、3D等,同时使用现代CSS方法来支持界面设计。同时,UI界面采用XUI和XML的形式设计,实现了显示与逻辑的分离。这方面确实和android有一些相似之处。对比JavaFX在服务器端和Web端的历史,桌面一直是Java的软肋,所以Sun在2008年推出了JavaFX来弥补桌面软件的缺陷。请在下图中查看JavaFX的改进。Out,当它刚推出时,开发人员需要使用一种称为JavaFXScript的静态、声明性编程语言来开发JavaFX应用程序。因为JavaFXScript会被编译为Java字节码,所以程序员可以使用Java代码来代替。JavaFX2.0之后的版本放弃了JavaFXScript语言并将其用作JavaAPI。因此,使用JavaFX平台实现的应用程序将直接通过标准的Java代码实现。JavaFX2.0包含非常丰富的UI控件、图形和多媒体功能,简化了可视化应用程序的开发,WebView可以直接在应用程序中嵌入网页;此外,2.0版允许使用FXML来定义UI,FXML是一种基于脚本的XML标记语言。从JDK7u6开始,JavaFx就和JDK捆绑在一起了,JavaFX团队说下一个版本会是8.0,所有的工作都是围绕8.0库做的。这是因为JavaFX将捆绑在Java8中,所以团队决定跳过几个版本号,赶上Java8。但是在Application的start()方法中,可以通过setUserAgentStylesheet(STYLESHEET_CASPIAN)继续使用Caspian主题。参考http://fxexperience.com/2013/03/modena-theme-update/JavaFX3D在JavaFX8中提供了3D图像处理API,包括Shape3D(Box、Cylinder、MeshView、Sphere子类)、SubScene、Material、PickResult、LightBase(AmbientLight和PointLight子类)、SceneAntialiasing等。Camera类也已更新。可以从JavaDoc中找到更多信息。富文本增强的富文本支持TreeTableView日期控件DatePicker添加日期控件CSS结构的公共APICSS样式是JavaFX的主要特性CSS已在私有API中专门实现(com.sun.javafx.css包)多种工具(如SceneBuilder)需要CSS公共API开发人员将能够定义自定义CSS样式WebView增强功能NashornJavaScript引擎https://blogs.oracle.com/nashorn/entry/open_for_businessWebSockethttp://javafx-jira.kenai.com/browse/RT-14947WebWorkershttp://javafx-jira.kenai.com/browse/RT-9782JavaFXSceneBuilder2.0可视化工具,加速JavaFX图形界面的开发,JavaFXSceneBuilder的下载地址像NetBeans一般,通过拖放配置界面。接口完成后,保存为FXML格式文件。该文件用XML描述对象配置,然后由JavaFX程序进行处理,从而降低了直接用JavaFX编写界面的难度。JavaFXSceneBuilder2.0新增JavaFXTheme预览功能,菜单“Preview”→“JavaFXTheme”可选择不同的主题,包括:Modena(FX8)。摩德纳触摸(FX8)。摩德纳高对比度-白底黑字(FX8)。摩德纳高对比度-黑底白字(FX8)。摩德纳高对比度-黑底黄字(FX8)。里海(FX2)。里海嵌入式(FX2)。里海嵌入式QVGA(FX2)。天这么热,但我还是很喜欢玩2048。我忍不住在空闲时间发布它。感谢GabrieleCirulli发明了这款令人惊叹(且令人上瘾)的2048游戏,因为它是开源的,具有麻省理工学院许可,并提供多种语言版本。2048游戏横空出世,下图是用JavaFX8开发的2048。技术用到Lambda表达式StreamAPIJavaFX8JavaFXCSS基础JavaFX动画fx2048相关类说明Game2048,主要游戏类GameManager,包括游戏界面布局(Board)以及网格操作(GridOperator)板,包括标签,分数,网格,TileTile,游戏中的数字块GridOperator,网格操作类Location,Direction定位帮助类RecordManager,SessionManager,记录游戏分数,session类这里是源码地址,有兴趣的可以学习和总结,以上相关源码都托管在这里。与AWT和SWING相比,JavaFX具有明显的优势。各大主流IDE都已经支持JavaFX的开发。最好的工具是NetBeans,加上lambda带来的好处,JavaFX的事件处理就简单多了。以前需要写匿名函数类。另外,自从JavaFX开源以来,JavaFX的生态环境越来越活跃,包括各种教程,嵌入式尝试,还有一些开源项目,比如:ControlsFX,JRebirth,DataFXFlow,mvvmFX,TestFX等.而且JavaFX可以在Android和ios上运行,太棒了!嗯,总结差不多就到这里了。在RIA平台上,有HTML5、Flex和MicrosoftSilverlight。JavaFX能不能表现好,就看大家了。只要我们多使用JavaFX,那么JavaFX就会越来越优秀。所有的语言都是这样,THEEND。原文来自:http://my.oschina.net/benhaile/blog/335109