AS初级学习

本人是设计出身,对语言根本不在行,但是做flash站没有一点as基础,什么效果也出不来,经过一段时间的摸索,和若干业务的锻炼,现在积累了一点经验,不敢独享,把这些真正由实战中得来的东西送给和我一样对程序不在行设计师以及新手朋友。老鸟们请飘过。

在开始之前,我想说,做出一个优秀的flash站的重要前提是什么认为首先是对美的理解再次是用户界面的合理性,曾经见过很多朋友做过的全站,充斥着各种动态效果以及技术模块,但是效果却不尽如人意,看起来很有土洋结合的味道,同时也看过很多国外的源文件,我发现里面用到的技术并非非常复杂的as程序。连我都可以轻易看懂。但是无论是界面配色以及动态效果都非常的不错。可以说一个flash站是否有视觉冲击力是它价值的首要体现,而缺乏基本的美术功底,做出来的东西就必然缺乏美观。所以我认为,任何软件或者技术都是为了实现目的而服务的,在我们努力学习as语言的同时,也应该不断的加强自己的艺术修养,而这个对美判断的能力显然需要比学任何计算机语言都要付出更多的时间去积累和沉淀。否则就算熟透as3,驾驭了air。我们同样永远也做不出优秀的作品,在文章末尾,再继续探讨。

好的,这里开始

一: flash 站的基本布局

       1:通常影片的场景大小,我设置成1600*1200,以适应各种显示器分辨率,帧率设置成30,根据需要也可以进行调整。关于在浏览器中适应浏览的问题,我放到最后说明。这里先放下。
       2:loading通常放在第一帧,而且除了背景以外,并不安排其他元素在第一帧内,这样可以保证第一帧的数据量很小。便于loading 动画的正确显示。
       3:每个大型的深层次mc,以及经常需要切换到内部的mc,比如页面的mc,导航部分的mc,等等,我通常会在场景外做一个入口,也就是一个色块,因为有的mc并非在内部的第一帧就有内容,在外层的时候他是空白的,所以为了便于操作,在内部的第一帧建立一个色块,便于随时双击进入操作。
       4:不要把所有的动画和内容都安排在主时间轴里,这样的操作会让你在以后的施工中非常的难于调整,甚至无法增添内容。我认为,应该把内容分成大类,然后相应的做成原件,根据内容的树状结构,相应的安排mc的嵌套。然后在各个时间轴里,用写在某个位置的as来控制各个时间轴的衔接。
       比如mc1和mc2都是内部有非常复杂动画的mc,我们要mc1动画完毕后开始mc2,这时候就不要把两个mc的内部动画放在一个时间轴内,最好是分别mc1,mc2各一帧,同时在mc1内部的最后一帧上写_parent.gotoandplay(mc2所在的帧)。

二:loading的制作

关于loading的制作, 上有的是教程,我只用一个最常用的做法,曾经很多教程上介绍如果做一个精妙的loading云云,我从来都没有深究,这段代码,我在无数个老外的源文件中都看到,连其中没有使用的进度显示文本代码都一样。。呵呵。。我的每个全站作品都是用的这个,loading原件通常安排在主时间轴上,内部的动画一定要打包成mc,呵呵,这个loading的内部动画安排成100帧,形式可以随意。只要是个100帧的动画就可以了。

三:有关于按钮

其实flash站80%的功能都是基于鼠标事件来完成的,所以按钮在 站中的地位不言而喻,在我理解一个flash全站无非就是通过一些按钮的导向来播放不同位置的mc。
按钮有两种方式可以实现。一种是按钮元件,一种是影片剪辑元件,这两个原件中。按钮只有4帧,而影片剪辑没有限制,所以如果需要一个有动画效果的按钮的时候,我们就只能用影片剪辑也就是mc来实现。事实上,我认为,mc在大部分时间里都可以替代按钮,通过脚本控制mc来实现按钮的功能要比按钮灵活的多。

这是一个最通常的动画按钮的内部结构

新手提示:这里需要提示的是关于帧标签的概念:上图中时间轴里标注的s1与s2是帧标签,在帧的属性栏里可以输入,使用了帧标签可以用gotoAndPlay等等语句来播放该真标签所开始的位置,过了该帧标签的范围后,不会停止哦~~。用帧标签的好处是你无需理会关键桢的数值,在任何地方播放这段动画,都可以含义明了的操作,并且容易解读和记忆。

在这个按钮mc所在的帧上(上图的外层)写上如下脚本,这个按钮就生效了 复制内容到剪贴板

代码:

可以看出在用脚本对btn1按钮添加了onRollOver,onRollOut,onRelease事件后,也就是经过,离开,点击,这个mc就拥有了一个按钮的3种状态,至于点击并不松手这种状态,通常并不常用,所以就没有添加,如果需要的话,那么只需要在对应的帧上写onPress事件就可以了

需要注意的是:利用这样的写法来实现的按钮,时间轴不能过长,也就是说,动作效果不能动画太长,如果时间很长的话,当你的鼠标划过的时候,这个按钮会执行s2部分,而这么长的动画,你并不是想要播放的,这个按钮已经可以说是一段用鼠标事件激活的动画了,不该用鼠标经过这样的事件来激活。

在全站中经常有这样的情况,即是很多按钮都要实现类似或者同一种类的功能,那么一一写onRollOver等等就太烦琐了。

这时候我们就需要用循环的功能了,最开始,如果你看不懂,那么你并不需要去深究到底是怎么写法,粘贴过去,然后去改你需要改的部分吧。

这里有5个按钮,按钮的名字是pm1,pm2—pm5,当鼠标经过这些mc的时候,如果经过的不是已经点过的mc的话,就播放这个mc的“s1”部分,鼠标离开的时候,满足同样条件就播放“s2”部分,点击这个mc的话,上一个被点的mc播放”s2″部分(通常也就是回到初始的状态), 复制内容到剪贴板

代码:

四:flash全站的页面切换

在传统的html站里,我们通过点击超链接来打开另外的一个html,在flash站里,我们当然也可以打开另外一个html页面,但是缺少了动画的翻页就失去了动态效果,所以,在flash全站里,通常都会有比较动感的动画部分来衔接两个页面,也就是说点击链接后,运行一个动画,然后动画完毕后,新的页面也呈现出来了。
这里有个示例 站 http://www.platina-design.com,这是我刚学flash早期的一个主页,一直还没空完成。

在实现这样的效果,我们有非常多的办法,这里我比较常用的是这一种,结构是这样的,很简单

如图可以看到,翻页动画层在页面内容层之上,最上方是脚本层,把脚本写在最上方的层里,是比较好的做法,在 站进入后,开始播放页面的mc,这mc的第一帧也就是上图中的第一帧,根据需要,我们可以写上一个stop(),页面内容被播放,当首页上的导航按钮点击后,导航按钮内安排了脚本:pages.gotoAndPlay(“start”),这时候,从第二帧开始的翻页动画mc开始播放,当播放到开始露出下面页面的时候,在时间轴上的相应帧上安排脚本:page.gotoAndPlay(_root.a)这里的_root.a是按钮点击时候被赋值的,也就是说,如果我点了按扭2.那么这时候,页面就切换到第二帧,点击3播放page的第三帧。最后停止,不要忘记写stop()在时间轴的最后,

如图所示页面的部分做成一个大mc,里面每一个页面做成一个mc放在一帧内,这样就对应了每个导航按钮的点击。在每个页面mc切换前,播放了翻页动画,在翻页动画过程中进行了换帧,于是,我们的目的就达到了。
这个功能实现的方法是很简单的,但是基础的方法是比较通用的,我们在查阅很多国外的flash全站源文件的时候,都会发现类似的方式,通过换帧来达到换页的方法,也是flash全站的一个比较通常的方法,当然还有其他的办法来实现,但是这个基本的方法还是值得新手朋友们掌握的。

五:文本内容的显示

任何 站中都要有文字,flash 站中的文字,我们在制作的时候有3中选择,一种是静态文本,一种是动态文本,一种是输入文本,静态文本可以使用任何字体,在发布后,浏览者可以看到你源文件中使用的文本,在 站中不需要经常更新的部分,大可用静态文本来写,因为不需要浏览者也拥有你的字体,所以,很方便你对页面所做的美工。

动态文本,通常用来显示后台程序所提供的文本内容,或者flash中动态生成的文字,比如建立一个空白的动态文本,id名起为mytext,那么在他的所在帧上写如下脚本就可以让他显示出指定的文字
mytext.text=”我傻,但我不流哈喇子”
发布后,这个文本框就会显示出相应的文字,因为是动态文本,所以通常在我们需要他的场合都是例如留言本,新闻发布等需要经常更新和变化的部分。所以如何动态的读入文字就是动态文本使用的目的。
如果你的工作伙伴中有程序员,那么你可以要求他的后台给你传递一个xml文件,然后你在flash端让你的动态文本显示这段xml,你的flash就拥有了相应后台的数据功能,

System.useCodepage = true;
var Txtload= new LoadVars();
Txtload.onLoad = function(success) {
if (success) {
mytxt.text = Txtload.neirong
} else {
//做点什么
}
};
Txtload.load(“test.txt”)

判断密码:  

以上图片演示地址,这个是业余时间做的一个玩具 http://www.shengmeixing.com/cia/index.html

需要注意的技巧是如果你的动态文本,包括输入文本如果需要覆盖遮罩效果的话,直接用遮罩层放在上方的办法不可以,需要为该文本添加滤镜的效果,才可以实现,为了不影响文本的显示,请将滤镜参数调整为0.另外的办法是把文本转换成mc并且用添加脚本setmask的方式实现。

六:音乐开关

音乐文件通常是mp3格式,导入到库中后,可以直接在需要的帧上选择插入声音对象,如果全站只有一首背景音乐的话,那么通常不用创建声音对象,直接在关键桢属性中选择声音就可以了,在影片的主时间轴上建立一个开关mc。就可以控制背景音乐的开关。当然也可以控制音量,但是我认为通常情况下,我们并不需要控制印量大小,对于 站来说,我们更多的时候只是需要选择开或者关就够了。。

代码:

这段脚本会在点击开关按钮后,音量溅出至没有,再次点击后,音量渐入至100%原理非常简单,这里不再详解,新手朋友请咨询查阅相关资料,这里用了一个标志位(_root.soundstatus)用来记录开关按钮的状态.在使用的时候将以上脚本相应的复制到你的mc里,音量开关就可以实现了。

如果你的 站有多段背景音乐的话,那么这时,你就不可以在时间轴内调用背景音乐了,你可以在主时间轴里的帧里定义你的声音,这样在需要他播放或者停止的时候,你就
可以随时控制了。下面的写法可以作为参考。这里mainsound是一个音乐,pagesound是另外一个音乐,根据我的需要,需要在不同页面播放不同的音乐。 复制内容到剪贴板

代码:

如上的代码当然也可以根据你的需要来定义n个声音,控制播放和停止的部分可以定义该声音之后的任何地方调用。

需要注意的是:创建声音对象的时候,我用的是attach命令,也就是说,这个声音文件已经包含在我的swf中的库里了。这里这样做会增加swf的体积,但是可以保证声音的同步,也就是在你需要播放他的时候马上播放,这个对于flash 站来说是很重要的,如果并不需要同步,那么我们大可用loadSound语句,这样还可以减小swf的体积,将声音文件放在外部,通过相对或者绝对路径来访问他。

在使用attach语句来调用声音文件的时候,该声音文件需要有id,这个id在库面板中进行设定,并且设置成在第一帧导出,才可以访问的到,也就是说在调用语句所在的帧播放的同时,该声音文件一定要已经读取完毕,才可以attach。如果在attach的同时,没有读入该文件或者,没有读取完毕的话,是不能引用得到的,这样就会造成播放失败。

七:flash的调试与常见问题。
ctrl+回车我们每做一个全站都不知道要按几百遍,在预览的窗口中的view-bandwidth profiler选项,点击后可以查看影片的一些基本数据,比如体积,帧数,等等,其中影片尺寸在调试中,我们应当时刻注意体积的变化,以提早发现异常的体积变化,同时窗口中,还可以查看每一帧的体积,我们尤其应该注意第一帧的体积,如果体积超过100k,那么就应该找原因了,因为这样有可能造成loading失效。另外模拟下载的选项也可以测试loading。download setting选项中,我们可以选择模拟下载的带宽。道理很简单,不再复述。

常见问题:
发布的时候,发现loading完全没有出现,而后面的 页也断断续续的,那么应该是你的主时间轴,忘记了写上一个stop()。呵呵

发布的时候,发现loading已经过了大半才出现,那么说明你第一帧的数据体积过大,减肥他。

今天到这里。。。休息。。打字一天很累。。本教程帧的很基础,很简单,甚至有些地方不是很对,请高手指出,本人也不是as高手,我只是个设计师,或者用美工这个蔑称来形容也没关系。

下面陆续要说的将会有,关于影片在浏览器显示的问题,元件在场景中定位的问题,swf的html写法的一些经验,flash 站如何对搜索引擎友好的部分,关于有后台支持的flash 站数据误缓存的问题。等等。新手同胞们。你们的回复是我的最大动力。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树人工智能机器学习工具包Scikit-learn211827 人正在系统学习中 相关资源:一款好用的审计软件——财务助手_财审助手-专业指导文档类资源…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2009年1月9日
下一篇 2009年1月9日

相关推荐

:"https://www.iruanshi.com/news2/author/jinwe2022"} }