aliue.com

FLASH 菜鸟进阶篇

11 views 2 Comments

0.1 如果能够,我想告诉所有Flasher,把所有工作都放在一个MC

许多朋友都习惯在新建一个空文档之后,直接在根时间轴(_root)进行制作,比如进行补间动作,进行形状变化等。确实,以前我也习惯这么做,这种方式大约陪伴了我两年的时间,直到后来发现明显不利于团队合作和文件的移植。

设想一下,假如我们按这种方式,直接在时间轴上进行制作,那么当我们把文件转交给同事的时候,当这个文件需要和另一个文件进行组合的时候,这种方式明显暴露出了它的弊端。

我这里所讲的把所有工作都放在一个MC,是在新建一个空文档之后,在根时间轴新建一个影片剪辑(MovieClip,简称MC),坐标设定为(0,0),以保持根时间轴的坐标属性,我们进入到这个影片剪辑里再来进行制作。如此,将大大提高团队协作的效率,我们自身在进行文件移植复制时,也同样变得无比的自如。过去是要复制时间轴上很麻烦的帧,而现在,只需要复制一个MC就解决问题了。当整个场景的尺寸等因素发生变化时,我们也能够很方便的进行调整。并且,这种方式比起先前的方式,并不会带来任何制作上的缺憾。事实上,根时间轴(_root)本身就是一个MC,只不过没有存在于库中。虽然我们无缘看到她的容貌,可是我们有幸在打开Flash的那一刻开始便进入了她的心灵。

另外,把所有工作都放在一个MC里,还避免了在本地播放 SWF 文件时可以用 Ctrl + Enter 跳过根时间轴上stop() 的问题。细心一些还会发现,倘若根时间轴上只有一个MC,那么在默认情况下,该SWF的右键菜单将看不到播放循环快进等项,Ctrl + Enter自然也就无效了。如果真要说把所有工作都放在一个MC里会带来什么不便,在某些场合里,这也许可以算作一条。然而实际中有太多的案例可以证明:把所有工作都放在一个MC里,在大多数场合里,无疑是利远远大于弊的。

这一条主要还是给Flash Designer的建议Flash Programer也不妨作一辩证参考。我做Flash程序设计师已有一段时间,既是一名Flash Designer,又是一名Flash Programer,所以我对这一点有很深的体会。同时我也很想告诉所有热爱学习的朋友们,一个人要想左右脑并用是完全有可能的,只不过需要一个前提,那就是兴趣加努力。

0.2 多用_parent,少用_root

这一条和上面一条关系密切。_root,我们通常把它叫做绝对路径,而_parent则是相对路径。使用_root有个好处,就是在很深的MC里,只需要很短的一句代码就可以返回到根时间轴去调用我们需要的对象。在使用过程中,可以用_parent替代的,建议尽量用_parent替代,否则当一个MC在包含关系上出现变化时(例如把当前MC插入到另外的MC内或者另一个文档中),大多数含有_root的语句都将受到影响。

举个很简单也很常见的一个例子,我们有时需要将一种已有的动画效果应用到一个新的影片中,此时却发现,把效果复制到新影片之后,效果消失了,原因是原来在根时间轴的帧,我们可能需要放在新影片的某一个MC里,这时我们很容易就可以体会到相对路径的优势。

尽量使用_parent,同样是为了便于团队协作以及文件的移植。如果有大量相同的路径需要用到_root,建议采用类似下面的写法:

·         var mcRoot = _root.myMC;
test_btn1.onRelease = function(){
  mcRoot.gotoAndPlay("label_1");
}
test_btn2.onRelease = function(){
  mcRoot.gotoAndStop("label_2");
}

这样,如果MC出现包含关系的变化,只需要更改mcRoot的初始值即可,而不必更改所有的路径语句。

0.3 多用gotoAndPlay(Label),少用gotoAndPlay(Frame)

这是初学者经常会遇到的一个问题。Label在这里是帧的标签名,Frame是帧数,使用gotoAndPlay(Label)远远要比使用gotoAndPlay(Frame)来得有意义。两者的写法举例如下:

gotoAndPlay("theSecond");//跳转到名为"theSecond"的帧,注意,theSecond需要加双引号。

gotoAndPlay(2);//跳转到第二帧,帧数不需要加引号。

在大多数的情况下,都建议使用前者。例如上面的语句,假如在第二帧前加了一帧,那么语句就需要改成gotoAndPlay(3),而相对的,我们如果事先给第二帧添加一个标签,例如"theSecond",无论前面的帧数如何修改,都不会影响到我们的语句了。

类似的,gotoAndStop也一样。

0.4 建立任务层,帧标签放一层,代码放一层,声音放一层

建立任务层的好处是方便管理,帧标签放一层,层的名字例如取为“Label”;代码放一层,取名“AS”;声音放一层,取名“Sound”。层的多少不会影响到文件的大小。

曾经有位网位有个疑问:如何把所有代码都写在一个层上?所以有必要在这里作下说明,把所有代码都写在一个层上,并不是说把影片中的所有代码都写在一个层上,而是相对的,把当前影片剪辑中的代码都写在一个层上。一个完整的Flash影片,通常都会包含许多影片剪辑,把每一个影片剪辑里的代码都单独放在一个层上,就是本文所要表达的意思。

0.5 为每一层命名,为库中的每一个元件命名

不少习惯使用photoshop的朋友,在学习Flash过程中,不习惯给层和元件命名,因为在photoshop中,选取一个元素相当方便。但是在Flash中不一样,Flash的影片构成远比photoshop的图像构成要复杂得多,尤其是在制作一些复杂案例的时候。一个MC包含第二个MC,第二个MC又包含第三个MC,如此反复,即使你在制作的当时可以记住这些元件所代表的目标,可是到了第二天,第三天,甚至一个月后,当你再打开文件的时候,毫无疑问,你将力不从心。原本觉得命名是在浪费时间,可是此时此刻,你才会深深感觉到,不命名,才是真正在浪费时间。所以,同样建议使用photoshop的朋友养成命名习惯。

Flash对中文表现得很友好,不习惯英文的朋友,大可以放心使用母亲教给我们的文字来命名。

0.6 把按钮动作写在帧上,而不是按钮上

这一条看起来有点没有必要,可是当你学习到一定程序的时候,就会发觉,这并不是在无病呻吟了。当场景元件和代码相对复杂时,把动作写在按钮上,很不利于查看代码时的查找和切换。选择一个帧所消耗的时间,远比选择一个按钮所消耗的时间要短得多,这一点在电子杂志等一些较大型的案例中表现得尢为显著。并且,把按钮动作写在帧上,更利于查看上下文的关联。从一开始就领悟这一点,有助于我们后期的学习。以下是同样的动作在按钮上和帧上的写法。

·     写在按钮上:
on(release){
  stop();
}

·     写在帧上:
test_btn.onRelease = function(){
  stop();
}

其中,test_btn为场景中的按钮实例,需要事先给该按钮命名为test_btn,这也是为什么许多朋友都不喜欢这个写法的缘故,因为还需要给按钮命名。

0.7 注释,如同一位慈祥朴实的老人,时时就在我们的身边

关于注释的重要性,许多同类书里都有阐述。在一些重要的地方,上下文关联的地方,都建议加上注释。这是一个利人利己的好习惯。当你过了一段时间再打开文件的时候,当你把文件转交给你同事的时候,你都将为自己当初的举手之劳而骄傲。不用担心写太多的注释会让Flash的运行变慢,Flash在遇到注释符的时候将自动跳过,直到下一条有效语句。Flash中的注释符有以下两种:

·     单行注释符“//”,格式:
//
此处为注释内容

·     多行注释符“/*…*/”,格式:
/*
此处为注释内容
*/

0.8 有许多成功,都是藏在trace身后的

我们已经不止一次听到类似的话:尝试100次,有99次是失败的,只有一次是成功的。

Flash的制作过程中,不会有太多让我们尝试100次的机会,但是道理是一样的,也许第一次就成功了,也许是第十次。在不断尝试的过程中,为了方便我们的测试,可以使用trace语句来作辅助。在很多场合里,trace已经成为尝试的代名词。格式如下:

trace(消息)

说明:消息可以是字符串,也可以是属性、变量等。例如:

trace("学习Flash"); //在输出面板中输出字符串学习Flash”

trace(_root._xmouse); //在输出面板中输出当前鼠标的x 坐标

注意,消息内为字符串时需要加双引号。许多初学朋友都会问,在什么时候应该用trace?试看下面的语句。

·         if(my_name1 == "happy"){
  trace("
第一层判断满足条件");
  if(my_name2 == "happy"){
    trace("
第二层判断满足条件");
    if(my_name3 == "happy"){
      trace("
第三层判断满足条件");
    }
  }
}

假如第一层判断不满足条件,那么程序将中断运行,不管后面两层判断是否满足条件,输出面板中都不会有任何消息;假如第一层判断满足条件,而第二层判断不满足条件,那么程序将不会考虑第三层判断是否满足条件,在输出面板中将输出"第一层判断满足条件";假如前两层判断满足条件,而第三层判断不满足条件,那么在输出面板中将输出"第一层判断满足条件""第二层判断满足条件"。这就很方便我们在调试过程中发现是哪一步出了问题。

0.9 一定要学会查字典

字典是任何程序员必备的一把利刃。查字典也需要掌握查字典的技巧,例如我们遇到声音方面的问题,那么可以在Sound类里找方法,遇到MC方面的问题,可以到MovieClip类里找方法,等等。

查看Flash的内建语句时还有个小技巧,例如我们在动作面板中看到“var”这条语句,想要查看关于它的帮助信息,那么只需要将鼠标停在“var”这三个字母中的任意一处,再点击动作面板右上角的“?”按钮,就可以快速查看到“var”的帮助信息了。

有空的时候,多翻翻字典,随意点击,随意查看,相信每一次你都会有所收获。本书配套光盘含有AS2.0的动作脚本字典,可以补足Flash自带的官方帮助中那些令初学朋友模糊不清的解释。

0.10 只需要用毫秒来计算的动作:Ctrl + S,不要舍不得这点时间

不仅是制作Flash,在电脑上,无论你是在写文章还是在设计图像,如果不想因为停电或者死机或者其他突如其来的事故而令你发出长叹,那么这个小动作一定要养成,千万不要因为它的而忽视了它。在制作过程中,要很频繁的先在Ctrl键上放一只手指,接着在S键上放一只手指,然后一起按下去,就这么简单。 

 

 

例子: 

Grab the RSS feed
分类
最新的文章
最新评论
  • 风速: 从来没去选过
  • 飞鱼: 友情 帮丁页~~~~~ ^_____^
  • sunpea: 相当蛊惑啊! 影帝是说梁朝伟么?
  • 骚鸡Jimmy: 我那天不是跟你Say Halo了麽?不要误会呀,我澄清那个不是我女友,是朋友~
  • yuki188: @kevinhsu 骚鸡可好相处咧…~~