Flash有非常突出的特点,文件小,画面质量高,可以随意缩放而不失真,支持交互性的设计等等,以上种种使得Flash 成为一种事实上的网络媒体的标准。按照Macromedia的一贯作风,保持不同产品之间的有机结合几乎已成为它产品开发的定式,Flash和Director的整合也不例外,这篇文章就谈谈这个问题。
所谓整合也就是不同软件间的沟通,简单的沟通,例如导入导出文件,Director支硈hockwave flash 文件的导入,可以以嵌入式导入,也可以以链接式导入。但是Director和Flash之间的整合远不局限于此,导入Director后的Shockwave Flash可以控制Director movie的播放和交互,反过来,Director movie也获得了对shockwave flash 的全面控制,这就给多媒体开发者以更多的选择,来扬长避短,发挥不同文件格式的各自优势。下面将要分几个部分来介绍Flash与Director整合的一些基本的应用。
Part I. Shockwave Flash 文件的导入
目前Flash 的最新版本是 5,而且同以前的版本相比, Flash 5在某种意义上可以说是革命性的升级,尤其对于 ActionScript的支持,已经完全具备了面向对象编程的能力,可惜的是即使是最新版的 Director 8也还不支持 Flash 5的格式,所以对 Director来说,只支持到 Flash 4的格式。如果你使用 Flash 5,在你输出 swf文件给Director 时请选择Flash 3,或 4格式,显而易见,新的ActionScript Director是不支持的,起码目前是这样,不过不要灰心,即使是 Flash 4的格式,可做的文章也不少了。
导入时,你可以从菜单File > Import 选择加入所需的swf文件,在弹出的对话框的最下面,有选项“标准的导入(也就是嵌入式) ” 或者“连接到外部文件(链接式)”,哪种方式导入取决于你的喜好和项目开发中的需要,通常如果 swf文件需要经常更新的话,我会采用外部连接式,这样只导入一次就可以了。另外一种方法从菜单 Insert > Media Element > Flash movies也可以导入 Flash文件,而且这种方法直接就显示多种选项供你选择来控制导入的 Flash 文件。下面是这个对话框的截图:
这个对话框很简单,英文也不复杂,我就不多解释了,需要了解的是:
Media中的“Linked”选项,勾选与否决定导入的方式为迁入式还是链接式,选择外部连接时,可以进一步勾选“Preload”选项。
关于Direct to Stage,这个选项我们并不陌生,Director在导入视频文件以及文本文件时都有这个选项,首先这个选项对于所导入的媒体文件的播放质量有非常大的影响,如果你希冀最好的播放质量,你需要勾选这一选项;同时你也要了解,Direct to Stage时,该媒体在舞台上的精灵(sprite)会忽略它本身所在的通道的限制,而总是显示在最上面,也就是直接写屏。
Flash 文件是由Xtra来处理的,我们都知道Xtra是Director的扩展,上面这个对话框就是由Flash Asset Options.x32这个文件来控制的,在Director的Xtra文件夹里有两个和Flash 相关的Xtra文件,除了上面这个以外,还有一个是Flash Asset.x32,请注意,前一个是用在编辑状态(authoring time), 后一个才是用在打包时的(run time)。不要不管三七二十一把两个都打包进 Projector文件,那样会导致出错信息。这也是Xtra文件打包的一个重要原则。
好了,文件已导入,下面来看看Flash怎样和 Director之间互传信息。
Part II. 从Flash到 Director
也许你是初学者,导入Director 的Flash movie 可以控制Director, 这就给了我们绝佳的机会在Director里使用Flash 按钮,那么Flash 是如何传递信息给Director呢?事实上,常用的方法有三种, 都是利用Flash ActionScript里的GetURL指令,这个指令其实是非常多样化的, 可以用来控制浏览器, 传递javaScript 指令, 控制打印功能, 同时也是与Director沟通的重要通道,同时这个指令在各个Flash版本里都兼容。好, 我们就来比较一下这三种方法:
1. 传递一个字符串(pass a string)
最直接的方法就是写一个字符串在Flash 里, 然后传递给Director, 再由Director Lingo的特定句柄来接受该字符串作为指令参数,
下面的例子是一个Flash 按钮来控制Director的电影来其移动播放头到一个指定的帧, 我们用帧的标签(marker)来标记。在Flash里, 对按钮在舞台上的instance 应用ActionScript, 具体地说就是用GetURL这个指令, 当然这儿不是用来指向一个网址的, 而是用来和Director沟通。
这里我使用Flash 3中的截图,在GetURL的参数栏里填入 "section1"作为字符串,而这个字符串就是下图可见的Director 电影里的帧的标签名。
好, 来到Director 中, 从Score窗口可以看出有两个场景, 第一到第五帧是导入的shockwave Flash 按钮(非常小只有522bytes); 从第十五到第二十帧是另一场景, 你可以看到帧的标签“section1”. 你现在为一要做的就是写下下面的behavior 然后赋予给舞台上的flash 按纽。具体的语句如下:
on getURL me, flashString
go to frame flashString
end getURL
这里我们应用了lingo里预设的事件 "getURL" 来响应Flash 按钮被按下时所需执行的指令, "flashString" 就是需要传递给下一句 "go to"命令的参数。当然它可以任何的变量名字,只要它符合变量命的命名规则。
|