浏览 3892 次
锁定老帖子 主题:JavaFX 1.2 特性和增强功能
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-15
JavaFX 1.2 SDK 发行版不能与 JavaFX 1.1 SDK 进行二进制兼容。这意味着必须用 JavaFX 1.2 SDK 重新编译应用程序及其所依赖的所有库。 动画 受影响的软件包:javafx.animation、javafx.animation.transition * 现在,Transition.interpolate 被命名为 interpolator。更改图标 以前: public override var interpolate = Interpolator.LINEAR; 现在: public override var interpolator = Interpolator.LINEAR; * Transition 类继承 Timeline 类。更改图标 * 不能再访问 SequentialTransition 和 ParallelTransition 中的 Transition.duration 变量。但是,现在 Timeline 中包含可公共读取的受保护变量 cycleDuration 和 totalDuration。删除图标 新增图标 public-read protected var cycleDuration: Duration public-read protected var totalDuration: Duration * KeyFrame 不再包含 timelines 变量。不再支持子时间线。现在,ParallelTransition 和 SequentialTransition 支持此功能。删除图标 * Transition 类不再包含 timelineDirty 变量。markDirty() 函数提供与原先的 timelineDirty 变量相同的支持。timelineDirty 以前是 Transition 类的一个受保护变量,现在是一个局部变量,可以通过 Transition 类中受保护的 markDirty() 函数进行修改。通过此更改,第三方库可以扩展 JavaFX Transition 基类以实现其他 Transition 类。现有的 Transition 类(如 TranslationTransition、RotateTranslation 和 PathTransition)的作用和以前一样。重命名 以前: timelineDirty = true; 现在: markDirty() 异步操作 受影响的软件包:javafx.async * javafx.async 软件包不再包含 AbstractAsyncOperation 和 RemoteTextDocument 类。javafx.io.http.HttpRequest 类可以代替 javafx.async.RemoteTextDocument 类。删除图标 * javafx.async 软件包中新增了以下类。新增图标 o JavaTaskBase o RunnableFuture o Task 效果 受影响的软件包:javafx.scene.effect * javafx.scene.effect 软件包中新增了以下类。新增图标 o BlurType o BoxBlur 图形 受影响的软件包:javafx.scene.transform、javafx.scene.image、javafx.ext.swing、javafx.scene、javafx.scene.layout、javafx.stage、javafx.geometry、javafx.scene.paint * 现在,javafx.scene.transform.Affine 类中矩阵元素的变量命名如下:更改图标 m00 --> mxx m01 --> mxy m02 --> tx m10 --> myx m11 --> myy m12 --> ty 但是,Transform.affine 方法较常见的用法不受影响。 以前: Affine { m00: 1 m10: 0 m01: 0 m11: 1 m02: 25 m12: 15 } 现在: Affine { mxx: 1 myx: 0 mxy: 0 myy: 1 tx: 25 ty: 15 } * 现在,javafx.scene.image.Image.fromBufferedImage(image:java.awt.image.BufferedImage) 被命名为 javafx.ext.swing.SwingUtils.toFXImage(image:java.awt.image.BufferedImage)。参数和功能与原先的方法相同。更改图标 * javafx.scene 软件包支持以下新类:新增图标 o Parent * javafx.geometry 软件包支持以下新类:新增图标 o BoundingBox o Bounds * 禁用 Node 时,不能提交事件。更改图标 o 应用程序不能在禁用的 Node 上预定事件。 o 禁用 Node 时,不能调用鼠标和键盘事件处理程序。 o 聚焦的 Node 被禁用时,可能失去焦点。 * javafx.ext.swing 软件包中的 Swing 组件不再包含 enabled 变量。disable 变量仍可用且足以处理组件的启用和禁用。删除图标 * 现在,javafx.scene.Node、javafx.scene.CustomNode 和 javafx.scene.Group 中包括新布局变量:新增图标 o layoutInfo o layoutBounds o layoutX o layoutY * 按照一定的布局来放置节点的首选方法是 layoutX 和 layoutY,而不是使用 translateX 和 translateY。 虽然 translateX 和 translateY 很可能会起作用,但 layoutX 和 layoutY 的性能更好。此外,使用合法的 translateX 和 translateY 时,如果之前未使用 layoutX 和 layoutY,则初始值会丢失。新增图标 * 默认节点 layoutBounds 不包括剪辑、效果或任何转换。重命名 * 使用 scaleX、scaleY 或 rotate 变量时,节点的隐式枢轴 (pivot) 是 layoutBounds 的(未转换)中心。重命名 * Node、Group 和 CustomNode 类中不再包含 boundsInScene 变量。localToScene(boundsInLocal) 函数提供与原先的 boundsInScene 变量相同的支持。计算 boundsInScene 变量的代价很大,由于不允许绑定到 localToScene 函数,localToScene(boundsInLocal) 函数能提供更好的性能。重命名 以前: node.boundsInScene 现在: node.localToScene(node.boundsInLocal) * 现在,javafx.scene.layout 软件包包含以下类。新增图标 o ClipView o Flow o LayoutInfo o LayoutInfoBase o Panel o Stack o Tile 有关更多信息,请参见 What's New in JavaFX 1.2: New Layouts and Effects(JavaFX 1.2 的新增功能:新布局和效果)。 * 从 javafx.scene.Parent 类(在 ClipView、Flow、Panel、Stack、Tile、HBox 和 VBox 类中)继承新的布尔型 public-read protected 变量 needsLayout。新增图标 * 现在,javafx.scene.layout 软件包 HBox 和 VBox 支持使用 nodeVPos 和 nodeHPos 在已分配的空间内放置节点。 在 JavaFX SDK 1.1 中,所有节点都放置在顶部(针对 HBox)且靠左(针对 VBox)。更改图标 * 在 javafx.scene.layout.Resizable 类中,Resizable 类不再包含 preferredHeight 和 preferredWidth 变量。getPreferredHeight() 和 getPreferredWidth() 函数提供与原先的 preferredHeight 和 preferredWeight 变量相同的支持。preferredHeight 和 preferredWidth 现在是局部变量,可以通过 Resizable 类中受保护的 getPreferredHeight() 和 getPreferredWidth() 函数进行访问。重命名 以前: public-read protected preferredWidth: Number 现在: protected override bound function getPreferredWidth(): Number 以前: public-read protected preferredHeight: Number 现在: protected override bound function getPreferredHeight(): Number * 在 JavaFX SDK 1.1 中,一个 Group 的不可见子节点的范围(即 visible: false; 的子节点)包含在该 Group 的范围中。在 JavaFX SDK 1.2 中,任何不可见子节点都不影响其父 Group 的范围。如果您想实现此行为,请将子节点设置为 (visible:true; opacity:0;)。更改图标 * javafx.stage 中新增了以下类:新增图标 o Alert o Screen * 新增的 Screen 类导致 javafx.screen.width 和 javafx.screen.height 属性被废弃。javafx.FX.getProperty() 不再支持 javafx.screen.width 和 javafx.screen.height。删除图标 * Screen 类还包括 dpi 属性以查询屏幕大小和分辨率 (DPI)。新增图标 * javafx.stage.Stage 类中的 focused 变量现在被命名为 containsFocus。更改图标 * 在以下任一情况下,在多个位置使用同一节点是非法的:在组的内容序列中,作为另一节点的剪辑或作为 CustomNode.create() 函数的返回值。如果 JavaFX 1.2 运行时检测到尝试在多个位置使用同一节点,则会抛出异常并忽略此尝试,以下所述的情况除外。更改图标 JavaFX 技术的以前发行版明确允许将一个节点插入到组的内容序列中,即使此节点已经是另一个组的内容序列的成员也是如此。如果发生此情况,则将此节点从另一个组中隐式删除。在 JavaFX 1.2 运行时中,当节点已经是另一个组的成员时,将此节点添加到一个组是非法的,因为这很可能是编程错误。但是,保留了隐式删除行为,并输出警告消息和异常栈跟踪,以便为现有代码提供过渡期。 * 从由 JavaFX Production Suite 创建的 FXZ 文件装入的内容获取指定的节点并将这些节点放入新组是很常见的。更改图标 var fxdContent = FXDLoader.loadContent("scene.fxz"); var g = Group { content: [ fxdContent.getNode("myNode") ] } 此代码将在 JavaFX 1.2 中生成警告消息,因为从 fxdContent 检索到的节点已经是 FXDLoader 创建的组的成员。要避免此警告消息,请在将节点添加到新组之前从原先的组删除此节点。如果使用从 FXZ 文件装入的节点,则可以使用 javafx.fxd.Duplicator 类复制节点(而不是移动它们)。或者,可以重新排列插图的结构并重新生成 FXZ 文件。避免在装入 FXZ 文件后执行场景图形操作。 * javafx.scene.paint.Color 类不再包含 fromAWTColor 方法。删除图标 public fromAWTColor(c: java.awt.Color) : Color * 从 javafx.ext.swing.SwingComponents 类中删除了 enabled 变量。删除图标 键盘和鼠标事件 受影响的软件包:javafx.scene.control、javafx.ext.swing、javafx.scene.input * 默认情况下,Node 不可聚焦,Node 不需要使用键盘处理程序进行聚焦,但有两个例外:Control 和 SwingComponent 在默认情况下是可以聚焦的。现在包含新的布尔型变量 focusTraversable。focusTraversable 变量指定此 Node 是否成为聚焦遍历循环的一部分。更改图标 新增图标 * 现在,MouseEvent 类包含一个新的 source 变量节点以进行事件冒泡。source 变量是鼠标事件下节点子树中的顶端节点。当节点是叶节点时,source 变量与此节点相同。当节点是父类实例时,source 变量是鼠标事件下 (@node) 子树中的顶端节点。新增图标 * 现在,javafx.scene.input 软件包包含以下类。新增图标 o InputMethodEvent o InputMethodHighlight o InputMethodTextRun o MouseButton o TextInput 语言更改 * 请参阅 JavaFX Script 编程语言参考。 * 多继承:在 JavaFX 1.1 中,JavaFX 类可以从类和接口继承,但具有有关可以继承哪些类的复杂规则。在 JavaFX 1.2 中,已添加 mixin 类的概念。继承规则现在包含 mixin,从而变得简单并且限制也不那么严格。现在,JavaFX 类可以从最多一个(非 mixin)类和任意多个接口或 mixin 继承。不能直接实例化 mixin。Mixin 和常规类很类似,但在声明中有 mixin 修饰符。有关更多信息,请参见 JavaFX 语言教程。 * 现在显式序列中需要逗号:更改图标 [3, 77, 8] 但是,} 后面不需要逗号(正如不需要分号一样): [Foo { x: 14 } Bar { sneeze: "cough" } ] * 已更改 or 运算符和 and 运算符的优先级。现在,JavaFX and 运算符的优先级比 or 运算符高。更改图标 a or b and c 等效于: a or (b and c) * 块中的 var 不能与包含块中的 var 重名。现在,以下情况是不允许的:更改图标 public function f() { var x : Integer; { var x : Integer; //compile error } } 或 for(i in [1..5]) { for(i in [2..4]) { //compile error println("Test"); } } * bind 中不再允许使用 on replace 触发器。更改图标 var x = bind for (i in [0..5]) { var y = (i mod 2 == 0) on replace { //compile error println("y changed"); } y } * 不再允许对 Iterable 使用绑定 for 循环,因为它们是没有意义的,不会产生更新。更改图标 * 对 Duration 的更改包括:更改图标 o Duration.toMillis() 返回值为双精度型而不是数值型。 o Duration.INDEFINITE 现在表示一个未知长度的时间段。 o 不再支持 Duration.toDate()。 * 许多保留字不再正式保留,因此可以将其用作标识符:更改图标 o first o in o init o into o inverse o last o on o postinit o replace o step o trigger o tween o where o with 媒体 受影响的软件包:javafx.scene.media * 新增了实时流协议 (real-time streaming protocol, RTSP) 支持。您可以在 RTSP wiki 上了解有关 RTSP 的更多信息。新增图标 var url: String = "rtsp://sqe-macpro-2.sfbay.sun.com/sample_300kbit.mov"; * 媒体支持另外两种 OS 平台:OpenSolaris 和 Ubuntu Linux。这两种平台使用开源多媒体框架 GStreamer。新增图标 * 媒体具有更好的视频拖动播放支持。新增图标 移动 * 移动现在支持矩形剪辑。新增图标 * 支持跨平台视频(VP6 编码),现在包括 FXM/VP6。新增图标 * 移动仿真器(仅 Windows 平台)支持其他媒体文件:新增图标 o 现在默认支持 FXM/FLV、WAV 和 MIDI 文件,且不需要第三方组件。 o 对于 MP3 和 AMR 文件,必须安装相应的 DirectShow 过滤器(一个分路器和一个解码器)。例如,K-Lite Codec Pack 包含所有必需的过滤器。 o 对于 3GP、MPEG1、MP4、MOV 文件,必须安装 Apple QuickTime 播放器。如果其中任一格式不能运行,请重新安装 Apple QuickTime 播放器并重新启动计算机。 性能改进 * 场景图形重构的底层实现提供了更好的运行时性能。更改图标 * 与以前的启动时间性能相比,现在的启动时间性能有了改进。更改图标 * 编译器更改提供了更好的运行时性能。更改图标 * 请参阅文章 Performance Improvement Techniques for JavaFX Applications(JavaFX 应用程序的性能改进技巧)。 持久性存储 受影响的软件包:javafx.io * 现在,新增的 javafx.io 软件包包含以下类。新增图标 o Resource o Storage 平台支持 * 现在,提供对另外两种 OS 平台的支持:新增图标 o Solaris Beta:OpenSolaris 2009.06 o Linux Beta:Ubuntu 8.04 LTE Production Suite 受影响的软件包:javafx.fxd * 现在,提供了对 Adobe Photoshop CS4 和 Adobe Illustrator CS4 的支持。新增图标 * 在 javafx.fxd 软件包中,FXDLoader 类有了一些额外变量和函数。FXDLoader 类从 javafx.async.Task 类继承而来,能够支持 FXZ/FXD 文件的后台装入。新增图标 * 添加了 FXDNode 类。用 FXDNode 类替代了 UiStub 类。现在 UI 桩文件是从 FXDNode 类扩展而来。新增图标 * FXDNode 类提供了两种装入图形内容的方式:同步(阻塞其他操作)或异步(在后台运行)。更改图标 Scene {content: FXDNode { url: "{__DIR__}mygraphics.fxz" backgroundLoading: true placeholder: Text { x: 10 y: 10 content: "Loading graphics ..."} } } * FXDContent 类不再包含 _root 变量。getRoot() 函数提供与原先的 _root 变量相同的支持。更改图标 UI 控件组件 受影响的软件包:javafx.scene.control * 现在,javafx.scene.control 软件包包含以下用于创建 UI 控件的类。新增图标 o Behavior o Button o ButtonBase o CheckBox o Control o Hyperlink o Keystroke o Label o Labeled o ListView o ProgressBar o ProgressIndicator o RadioButton o ScrollBar o Skin o Slider o TextBox o TextInputControl o ToggleButton o ToggleGroup * 请参阅文章《JavaFX Scene UI Controls》(《JavaFX 场景 UI 控件》)。 * 现在,Control 是一个抽象类并进行了重要的更改。更改图标 * 在 javafx.scene.control.Skin 类中添加了 Behavior 变量,同时从该类中删除了 focused、hover 和 pressed 变量。删除图标 新增图标 * 在 javafx.scene.control.Skin 类中,scene 变量被重命名为 node。更改图标 以前: public-init protected scene Node 现在: public-read protected node Node * 现在,Skin 类是一个抽象类并添加了新的 contains() 和 intersects() 函数。更改了现有的函数名称,如下所示:更改图标 新增图标 以前: protected computeMaxHeight: Number 现在: protected getMaxHeight(): Number 以前: protected computeMaxWidth(): Number 现在: protected getMaxWidth(): Number 以前: protected computeMinHeight(): Number 现在: protected getMinHeight(): Number 现在: protected computeMinWidth(): Number 以前: protected getMinWidth(): Number 以前: protected computePrefHeight(width: Number): Number 现在: protected getPrefHeight(width: Number): Number 以前: protected computePrefWidth(height: Number): Number 现在: protected getPrefWidth(height: Number): Number * 对 TextBox 进行了重要的更改,向其中添加了新的功能。更改图标 新增图标 UI 图表组件 受影响的软件包:javafx.scene.chart、javafx.scene.chart.data、javafx.scene.chart.part * 现在,新增的 javafx.scene.chart 软件包包含以下针对图表组件的类。新增图标 o AreaChart o AreaChart.Data o AreaChart.Series o BarChart o BarChart.Data o BarChart.Series o BarChart3D o BubbleChart o BubbleChart.Data o BubbleChart.Series o Chart o LineChart o LineChart.Data o LineChart.Series o PieChart o PieChart.Data o PieChart3D o ScatterChart o ScatterChart.Data o ScatterChart.Series o XYChart * 现在,新增的 javafx.scene.chart.data 软件包包含以下针对图表数据组件的类。新增图标 o Data o Series * 现在,新增的 javafx.scene.chart.part 软件包包含以下针对图表部件组件的类。新增图标 o Axis o Axis.TickMark o CategoryAxis o Legend o Legend.LegendItem o NumberAxis o PlotSymbol o PlotSymbol.Circle o PlotSymbol.Cross o PlotSymbol.HollowDiamond o PlotSymbol.HollowTriangle o PlotSymbol.Square o Side o ValueAxis Web 服务 受影响的软件包:javafx.io.http、javafx.data.pull、javafx.data.xml、javafx.data.feed、javafx.data.feed.atom、javafs.data.feed.rss * 现在,HttpRequest.enqueue() 被命名为 HttpRequest.start()。更改图标 * 现在,HttpRequest.cancel() 被命名为 HttpRequest.stop()。更改图标 * 不再包含以下两个公共函数:删除图标 public function setHeader(name: String, value: String) public function getResponseHeaderNames(): String[] * 这些方法和字段的签名由 Integer 更改为 Long:更改图标 public-read protected var towrite: Long; public-read protected var toread: Long; public-read protected var written: Long; public-read protected var read: Long; public var onToWrite: function(bytes: Long): Void = null; public var onToRead: function(bytes: Long): Void = null; public var onWritten: function(bytes: Long): Void = null; public var onRead: function(bytes: Long): Void = null; * 现在,javafx.io.http 软件包中包含 URLConverter 类。新增图标 * 新增的 javafx.data.feed 软件包包含以下两个类:新增图标 o Base o FeedTask * 新增的 javafx.data.feed.atom 软件包包含以下类:新增图标 o Atom o AtomTask o Category o Content o Date o Entry o Factory o Feed o Generator o Id o Link o Person * 新增的 javafx.data.feed.rss 软件包包含以下类:新增图标 o Category o Channel o Enclosure o Factory o Guid o Image o Item o RSS o RssTask o Source 其他 受影响的软件包:javafx.util、javafx.data * 新增的 javafx.date 软件包包含 DateTime 类。新增图标 * javafx.util 软件包中新增了以下类:新增图标 o Math o Properties * 新增的 javafx.data 软件包包含以下两个类: o Converter o Pair * 新增的 javafx.reflect 软件包包含以下两个类: o FXChangeListener o FXChangeListenerID 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |