| |
|
|
|||||||||||||||||||||||||||
|
《循序渐进——Flash MX基础与技巧》网上教程 24.1 图片浏览器 24.1.1 实例说明 这个实例综合运用了图像动态导入,声音简单控制,Flash组件等技巧,实现了本地或网页图片浏览的功能。通过学习这个实例的制作过程,读者可以掌握制作网页Flash浏览界面的基本技巧,稍加改动,就可以实现Flash界面对文字,图片(jpeg格式),音频(mp3),乃至SWF动画的浏览。
24.1.2 有关知识 载入变量、载入图片、设置属性、ListBox组件的应用、物件的拖拽、音乐控制、渐变的使用、图像的精确定位等。 24.1.3 制作过程 一、界面背景的制作 图片浏览器的整个界面做成一个MovieClip,主要是因为大部分内容与外界没有联系,单独成为一个整体。这个界面自己实现了背景图片的切换功能,这里主要展示了矢量平面设计的一些技巧,另外用到了无需读入外部文档动态导入图片的方法。如图24-1所示。 图24-1 界面背景的层次结构 步骤1:新建文件File>New,把文件尺寸设为700X400 pixels,背景设为#999999。按Ctrl +F8,新建一个符号,并起名叫bk,Behavior设为Movieclip。 步骤2:bka层制作。在这个叫bk的Movieclip中新建一个叫bka的层。在这个层里画一个长方形,选定它,在属性面板中修改它的属性:W:700.0 H:400.0 X:0.0 Y:0.0,这样精确的定位,使它和这个场景窗口正好吻合。如图24-2所示。 图24-2 设置界面的大小并精确定位 选中填充工具 图24-3 给界面填充线性渐变色 步骤3:line层和title层的制作。这两层相对容易,新建名叫line和title的层。做title层,这层很简单,用文本工具,使用适当的字体,在顶部适当位置写好即可。在line层画一个长方形,把它的长度调为700.0,x位移为0.0。然后在长方形右下角用线形工具切割一个梯形,删除多余的部分,如图24-4所示。 图24-4 线框的制作过程 步骤4:bk层文件夹的制作。这个层文件夹的Load层是用于导入背景图片的MovieClip,以及一个遮罩层。点击时间轴面板的
图24-5 制作遮罩 在load层画一个小的长方形,把它的X,Y坐标都设为0,然后按F8将它变成一个Movieclip,命名为bkload,在实例属性中给bkload在bk 中的实例起名叫square。在后面的程序中,我们将利用 注意:loadMovie();第二个变量target必须是场景中的一个对象。square就是这个对象。背景图片导入之后替代square的原mc,并继承原mc的属性。所以把suqare的坐标设为(0,0),图片导入后也就正好在(0,0)这个点上。Mask层在上面使载入图片的多于部分被遮蔽,正好显示出和多边形吻合的形状。 步骤5:button层的制作。这个层八个按钮制作方法相同。以其中back按钮(符号名buback)为例。结构如图24-6所示 图24-6 buback按钮结构示意图 layer1层使用了不同的透明度,这个效果需要在属性面板中修改alpha值实现。由于按钮制作不是本节重点,细节从略。把按钮排列到button层上,分别在属性面版中给实例起上相应的名字:home,mail,close,music,bk,list,back,next。至此,界面组件bk的制图工作全部完成。 提示:给实例取名很重要,没有这些名字下面的Action就无法控制它们。 步骤6: Action Script的编写。新建action层,在第一帧上写程序,把action同一写在一个帧上便于调试。需要说明的语句有以下几点: 声音文件bk.mp3是通过加到sound对象msound上来实现控制的,输出swf文件时它并没有被加到场景中,为了用Action控制这是必需的。但Action是不会识别.mp3的,需要给bk.mp3做如下处理:在库中右键单击bk.mp3,在右键菜单中点选Linkage,在弹出的对话框中选择Export for ActionScript,并给它起名叫bksound,如图24-7所示。 图24-7 设置声音文件的链结属性 然后使用msound.attachSound("bksound");才把声音分配给msound声音控制语句 以下是bk这个MovieClip中的Action程序。
程序填写好后,bk就具备了动态背景变化控制,和背景声音控制功能(其中list,back,next按钮尚未定义)。把bk拖到主场景中,输出为SWF文件,在光盘图像浏览文件夹的bk子目录中放入预先准备好的700X400背景图片1.jpg、2.jpg、3.jpg。运行SWF文件,点击按钮即可看到效果。 二、loadscreen的制作 loadscreen是用来载入浏览器所要浏览的图片的MovieClip。它内部没有Action,由四个层组成,screen层和shadow层共同组成透明且右阴影的载图屏幕;load层用于载入图片,mask层遮在上面使图片不至于超出显示范围。它们的功能和电影片断bk里面的load,mask是一样的。如图24-8所示。 图24-8 loadscreen结构示意图 步骤1:screen的制作。实际上是一个300X300正方形加上四个圆点,请看源程序库中的screen。具体做法从略。值得注意的是它在Loadscreen中的实例是必须起名的,因为后面的Action要对它进行控制。这里给它起名为screen。 步骤2:shadow的制作。在库新建名为Shadow的图像(Graphic)符号。画一个300X300填充颜色为#333333的正方形,连接它的对角线,在正方形内部画一个同心的290X290正方形,整个过程在一个层上完成,如图24-9所示,利用渐变在正方形内切割的四条狭长的梯形上建立#333333到#666666的渐变(渐变制作方法见界面背景的制作步骤2)。最后删除多余的线(包括对角线),shadow就制好了。 图24-9 阴影的制作 步骤3:合成。按照图24-8所示的结构把物件组合起来,其中mask是一个300X300的正方形,load是一个movieclip,它在这里的实例取名叫load使它可控制,另外它的坐标应该是(0,0),这些和电影片断bk中的load是完全一样的。值得注意的是screen和shadow都要设为半透明,这样load就会透过screen显现出来,这不是我们想看到的效果。解决办法就是让movieclip load为空,即没有任何内容,这样它依然是个movieclip,依然可以用来载入电影,然而却不可见。 三、photolist的制作 photolist利用了Flash MX提供的用户界面组件(UI Component)之中的Flist组件。Flash MX提供的每种组件都附有相应的方法,来实现组件各种高级功能,充分利用组件,会使我们的工作事半功倍。Phtotolist外观与结构如图24-10所示。 图24-10 photolist结构示意图 其中close层按钮就是个普通按钮,实例名close;title层的按钮实例名photolist。Screen层是在movieclip loadscreen使用过的,这里改变一下长宽,使之适合即可。 最关键的还是Flist组件的应用。Flash MX共提供了七种组件,在本书第16章有详细的内容,另外,如果有一定英语基础,可查阅Flash附带帮助文件。 首先给场景加入UI组件。从Component面板中拖拽listbox到正在编辑的photolist的list层,调整长宽达到满意。 选中这个实例,在属性)面板起名为list,点选面板右上方参数(Parameters)标签,这是Flash组件特有的面板,用于设置组件中的参数。其中: label: 一个字符串数组用于存放listbox中项目名称, data: 存放相应项目相关联的数据, select multiple : 一个布尔量决定list中的项目是否能多重选择, change handler: 指向用户点击项目时你所要调用的函数。 可以双击参数面板的label或data选项跳出赋值对话框修改增删项目,对话框内表格前面的数字是项目的序号(用index表示),注意它是从0开始的。不过我们并不打算用这种方法给list添加项目,我们将利用Action实现。实例中涉及到的list方法如下,其中Flist是listbox实例的名称,根据需要变更: FListBox.addItem(label [, data]) :在list尾部添加一个项目。 FListBox.getSelectedItem():返回list中最近选中过的项目的序号。 FListBox.setChangeHandler(functionName, [location]):制定一个函数,每当被选项目变换时调用它。 FListBox.getSelectedIndex():返回list中选中项目的序号。 FListBox.setScrollPosition(index):是指定序号的项目滚动到list顶部。 List大约支持31种方法,具体功能不再具体叙述。 四、loading的制作 这是一个很简单的MovieClip,用在下载影片和载入外部变量时作为等待的提示。一共一层三帧,产生动画的效果。如图24-11所示。 图24-11 简单的loading动画 五、Action Script的内容及场景的组织 至此我们已经完成了大部分的物件制作,现在可以进入最后的场景组织阶段了。整个动画的结构如图24-12所示。已经制作完成的loading,loadscreen,photolist以及bk依次排列在相应图层,分别给他们的实例命名为loadvar、loadscreen、photolist和bk。按图24-12所示把物件安排好后,按以下步骤进行Action的编写。 步骤1:loading画面的制作。前四帧做载入处理,因此只显示loading。在第一帧的Action层写下:IfFrameLoaded (4) {gotoAndPlay(3);}, 即如果整个动画的第4帧已经载入时,就跳到第三帧开始播放,而在第2帧写下gotoAndPlay(1),如此就形成了最简单的载入动画,如果没能载入所有动画,将在1,2帧反复播放。 而在第3帧我们又利用Action实现对读取外部文本的等待。在第3帧写下: loadVariables("readme.txt",_root.loadvar);stop(); 将外部同目录下的文本readme.txt读入到loadvar上面,然后使动画停在该帧。 然后点选loadvar写下:
大概的思想是一旦readme中的数据被loadvar全部读取,loadvar就按程序把数据一个项目一个项目的加载到photolist之中,做好后跳到第4帧。 步骤2:第四帧Action。这里定义了loadscreen和photolist的鼠标拖拽以及photolist的相关函数myHandler:
步骤3:对bk的action的扩充。细心的读者可能已经注意到,在制作bk时,我们没有对其中的按钮list,back,next功能进行定义,因为他们的功能是和后面的photolist相关的。这三个按钮分别用来开关phtolist窗口,以及控制list中的项目。我们再回到bk内部,在它的Action层上补充以下代码:
费了九牛二虎之力,我们终于完成了这个实例,接下来把想要展示的图片放到目录中,在和动画同目录的位置写一个readme.txt文件,存入图片的名称和地址,导出swf文件,即可看到效果。可以把这个实例放到主页上,向浏览者展示的图片。 注意:readme文件按照以下格式书写: total=12& &nam001=modernsky01& &url001=image/01.jpg& &nam002=modernsky02& &url002=image/02.jpg& ……………….. total是图片总数,nam***是图片名称,url***是图片地址。 与本实例有关的文件比较多,它们都可以在光盘中的“图像浏览”文件夹中找到。 |
||||||||||
|
|