Macromedia Flash MX 2004 Preview -- by Eric Jr. from junioronline (翻译:54zq)
Macromedia 终于要发布了Flash MX的新版本Flash MX2004了。 它有许多新的特征提供, 或许在同一个文章中叙述显得太多了。 但我在本篇文章中将尽可能尝试更多方面的内容。 注意由于正式产品现在还没有完全供应, 一些数据在不久的将来可能还会发生改变。 让我们到时再跟踪报道。
Availability(有效)Macromedia Flash MX 2004 在2003年九月将会在美国和加拿大上线销售。法国版,西班牙版,意大利版,德国版,日本版,朝鲜版, 和简体中文版随后发布。
Macromedia Flash MX 2004 整体的售价| Macromedia Flash MX 2004 依旧是教育,政府和商业许可的程序。
Flash MX 2004有什么新特性 首先, Macromedia Flash MX 2004 分成两个版本:
|
![]() |
这篇预览文章针对Flash MX Professional(专业) 2004 , 是开发者的观点。
如果你对Flash MX的脚本语言陌生,这篇文章的一些特性描述对你来说可能毫无意义。
Flash MX 2004 的一些新特性
Flash MX 2004 包括许多特性有计划的对复杂项目,藉此改良生产效率。这里是一连串的一些令人兴奋的新特征:
![]() |
![]() |
![]() |
![]() |
| - 整理长度 - 产生多样的剪接片断 - 录制视频剪接片断 - 输出声频 |
![]() |
![]() |
screens环境的介绍
Flash MX 专业版2004 引入一种基于screens开发的设计环境, 是开发应用软件和幻灯片演示的理想选择。
在 Macromedia Flash MX 专业版 2004 中, screens 提供structural building blocks 的一个编辑状态用户界面,使它容易的让你产生复杂,分等级的Flash 文档, 像是幻灯片或基于form的应用程序。
screens 提供高阶层的方法去创造应用程序。 藉由screens,你不用在时间线使用多帧和层而能在 Flash中构成复杂的应用程序。 事实上,你能产生一个复杂的应用程序而不用看时间线。
复杂文档结构
当你编辑一个基于screen文档的时候,screens 在一个你做的结构化层次中被安排。 你通过树状结构的嵌套screens组织文档。 你能容易地预览而且修改基于screen文档的结构。
你能做二不同的基于screen文档:一个 Flash 幻灯片, 适用于有顺序的的内容,像是一个幻灯片演示或多媒体陈述,或一个Flash form应用程序, 理想为非线性,基于form应用程序, 包括富因特网应用程序。然而,你能混合使用幻灯片screens和form screens在任何的基于screen文档里,从而在一个演示或应用程序分别利用两者的优势功能和做更多的复杂文档。(译者注:loutes??)
![]() |
Screen 行为
在 Flash MX 2004 中像任何mc你都能使用行为面板 把ActionScript加入你的screen, 不必须写任何一行代码。
这一个特征对开发者来说可能是 screens 的令人兴奋的部分,Screen 过度。
Screen 过度
screen 过度行为允许你们在screens之间动态的过渡,screen淡入淡出,screen旋转,等等效果。一个过度使用一个行为,你直接附加行为到一个screen 。
![]() |
screens如何用ActionScript互动
screens 类似嵌套的MC 他们以 ActionScript 互动。这意谓你能用 ActionScript 控制你的 screens, 但是很小心;screens 的结构化层次的能力在于 ActionScript 2 ,因此,这需要些稍微不同的脚本途径。
这里是有关用ActionScript控制screen一些方面:
你只能使用screen类 , 幻灯片类, 和Form类时用ActionScript控制 screens。
每个screen自动地被和ActionScript联合,基于它的类。
你能改变指定screen的类,而且你能用属性检查器设定screen的一些叁数。
screens 有他们自己的 _root-screen, 与你的文档的_root根不同。
在里面嵌套了 screens, 那 _root可能用 "rootSlide"访问取代 "_root".
(查看新的 ActionScript 组件 MovieClip.lockroot)
对于一个基于screen的文档你不能够观看或操纵主时间线。 然而, 你能指定主时间线使用_root作为一个目标路径。
一个新的generation of components
新的components现在支持焦点管理用来控制标签导航。尽管components有新的复杂设计, 你能容易地使用可变皮肤改变他们的外貌。
components是建立在以 v2 component体系共享中心基础上, 功能比如:styles,事件处理,皮肤,焦点管理和深度管理。当你把第一个 v2 component加入一个应用程序的时候,大约有25 K核心功能被增加到文档。 当你附加的component时候, 相同的25K被重复使用, 最终在大小方面造成较小的增加可能是你期待的。
![]() |
Actionscript 编辑器变化
ActionScript 编辑器在许多的方面已经被更新,使用是更健康和更容易的。 这里是一连串的新特征。
Actionscript 2
ActionScript 语言自从形成以来已经发展了好几年。随着Flash 的每次新发行, 增加的关键字,对象,方法和其他的语言元件已经被增加到语言中。然而, 不像较早的Flash发行, Flash MX 2004 和Flash MX 专业版 2004 引入一些新的语言元件比以前更标准的彻底的实现了面向对象的编程。 因为这些语言元件表现对核心 ActionScript 语言的一个重要的增强,他们表现为 ActionScript 的一个新的版本: ActionScript 2.
随着关键字例如:类、接口、扩充的工具,ActionScript句法对于熟悉其他的语言程序设计者学习现在更加容易。 新的程序设计者能学习他们能适用于他们未来可能学习的其他面向对象语言。
严谨的数据类型
ActionScript 2 让你明确地在建立变量时宣布变量的对象类型;这叫做严谨的数据类型。 因为数据类型会引起编译程序差错,严谨的数据类型阻止你分配错误类型的数据到一个已存在的变量。
严谨的数据类型的极大优势是变量的类型建立在built-in基础上,此如:按钮 , 阵列,等等, ActionScript 编辑器显示变量的代码提示。
![]() |
新的 ActionScript 语言元件
这一个区段描述在 Flash MX 2004 中的 ActionScript 新的语言元件。 你使用这些脚本元件之中的任何一个,必须在Flash 7里编译 。
ActionScript 2 语言元件
ActionScript 2 支持所有的标准 ActionScript 语言的元件;它只是使你写的脚本以更接近和遵守被用于其他的面向对象语言的标准, 比如javascript和 Java。 ActionScript 2 主要感兴趣的人员是正在编写应用程序需要应用到类和子类的中级或高级Flash开发者。
新的在 ActionScript 2 中的语言元件在下面被列出:
使用 ActionScript 2 语言元件作为脚本时必须以外部脚本方式储存;也就是说, ActionScript 2 用辞不在 Actions 面板中支持。 只有import命令在 Actions 面板中被支持。
ActionScript 2 例子
因为这是一个预览版, I抦 not going to tutorialize the facets of Actionscript 2. 对于关于编程的较多资讯构成它使用,请读一下这个描述 ECMA 262 版本 4 的文档
(http://www.mozilla.org/js/language/es4/)
class类
这里是一个示范该如何使用 Flash MX 应用程序的类的简单例子:
// 类声明:
class TPoint { //类属性: var _x:Number = 0; var _y:Number = 0; // class contructor function TPoint() { } }
为了要使事物更有趣, 我增加一个功能能立刻设定那 _ x 和 _ y 属性,而不是用手在属性中写。当创造它的时候, 我增加了设定对象缺省值的可能性。 当然,用类构造函数处理。
// class declaration: class TPoint { // class properties: var _x:Number = 0; var _y:Number = 0; // class contructor function TPoint(x:Number, y:Number) { if (arguments.length > 0) { _x = x; _y = y; } } // function to overwrite properties with new values function SetPoint(x:Number, y:Number) { _x = x; _y = y; } }
做一个类的实例没有改变 ActionScript 。并且使用他可以用相同的方法完成,这里是一个例子,我把严谨的数据类型加入使他更好的运行。
var Point0:TPoint = new TPoint(); var Point1:TPoint = new TPoint(5,5); // default values
这看起来有一点多余,因为 classname 在相同的地方中被提到两次, 所 然而, 第一次是为严谨的数据类型, 第二次是调用 TPoint类的构造器。
extends(扩充)
如果你用新的属性及函数扩充你的类,你需要在它自己的脚本文件中储存它, 就像任何其他的类将要做的。 这里是扩充 TPoint 的类一个例子:
class TPoint3D extends TPoint { var _z:Number = 0; function TPoint3D(x, y, z:Number) { if (arguments.length > 0) { super(x, y); _z = z; } } }
你能看到我已经增加 _z属性。 构造函数使用super()构造超类,如果你要定义缺省属性,TPoint 的构造函数将会用相同的方法处理。
implements(工具),interface(接口)
你能为你的类做接口。 他们被看作为一个类它本身, 或仅仅被看作一个类的定义。如果你实现你的类一个接口,你将会在你的类中宣布已经在接口中被定义的功能。 这里是接口的一个例子,
interface PointInterface { function SetPoint(); function Distance(p:TPoint):Number; } class TPoint implements PointInterface { function SetPoint() { } function Distance(p:TPoint):Number { } }
dynamic(静态的),static (动态的)
如果你定义一个类的一些属性,你能重实例来访问他们。 然而,如果在一个类没有被公布,不可能对一个对象附加属性。如果他们没有在类中被宣布。 动态的类使这变得可能;这里是一个例子你能做的:
dynamic class TPoint { var _x:Number; var _y:Number; }
这里是实例:
var Point:TPoint = new TPoint(); Point._z = 5; // This will not lead to a compiler error, because the class is dynamic.
TPoint 的一个子类将会继承超类的动态特性。 这样使用可以使用静态的指令使你的子类静态而不是电动的。
public(公用),private(私有)
有时类包含变量储存暂时的对象, 或数值。
这时常被用来在一个函数里创建一个新的值,但是那只是利用函数本身达到变量接近,而不是其它函数。 私有的指令能帮你解决这,你只是宣布一个私有的变量,而且它可能在类各处被任何的函数存取。好处是变量不会作为你的实例的一个属性。
私人的变量可能被遗传而且使用公用指令做成公用的。
class TPoint { private var _x:Number; function getX():Number { return _x; } } var Point0:TPoint = new TPoint();
如果你利用上面的例子调用_x属性,它会引导一个编译程序差错说你没有对属性的存取。你能调用函数 getX() ,而且它将会返回私有的特性, 因为类它本身确实有权限存取它。
get(获取),set(设定)
如果你调用来自一个对象的一个属性,对象返回没有任何其他的计算属性的数值。但是有时,我们在返回一个数值之前做一个运算,或数值它本身需要被计算。
获取和设定能帮你解决这些问题,你只需要一个函数中叙述他们,而且那一个函数将会像一个属性一样运作。 这里是一个例子,birthyear 像一个属性一样运作, 但是它的实际上一个函数。
class Person { var age:Number; function get birthyear():Number { var year = new Date().getFullYear(); var birthyear = year - age; return birthyear; } } var Person1:Person = new Person(); Person1.age = 18; trace(Person1.birthyear);
如果你运行这一个代码, birthyear 将会返回 2003- 18, 或 1985.
同样的设定get,你能使用它写 birthyear 特性。 举例来说,如果我们设定 birthyear 到 1975,年龄属性应该被改变到28 。 这里是例子:
function set birthyear(yr:Number) { var year = new Date().getFullYear(); age = year - yr; } var Person1:Person = new Person(); Person1.birthyear = 1975; trace(Person1.age);
Import(输入)
如果你使用一个不在你的。fla当前文件夹中的类,在创建一个类的对象,你必须指定路径, 比如:
var Point:TPoint = new folder.nestedfolder.TPoint();
如果你打算从这个类产生多重对象,每次都需要指定路径可能是一种痛苦。如果你import一次这个类 ,,因为编译程序知道那个类的存在 , 所以你不需要再指定路径。
import folder.nestedfolder.TPoint; var Point:TPoint = new TPoint();
最后,你也能import类的整个文件夹。 使用通配符 (*) , 就像你可能从其他的语言知道的。
import folder.nestedfolder.*;
记住你仍然必须为类的本身指定路径。 所有在嵌套文件夹里的类,都必须被公告性的像这样的输入:
class folder.nestedfolder.TPoint
{
}
小结
Macromedia Flash MX 专业版 2004 是top-of-the-line,
是创造数据驱动应用程序 , 交互陈述, 和高品质视频体验的Macromedia Flash 开发环境
结合Macromedia Flash MX 2004种种因素, Macromedia Flash MX 专业版 2004 是一个包罗万象的Macromedia Flash版本。
开发者很快地能用基于forms开发、强大的数据捆绑建立有效的数据驱动应用程序。
视频专业人士能对高保真视频整加互动性和自定义界面且递送给世界最普遍的视频用户端,Macromedia Flash 播放器。
开发高端设备,移动通信方面的内容和应用程序。