每个人都有自己的习惯和方法,下面这些是我学习过程中逐渐积累起来的,供各位参考。好的习惯需要时间的积淀,希望这一章的文字能给所有初学Flash的朋友们带去洗礼。很多时候,我们所要考虑的,都应当是更远,而不仅是眼前。
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",无论前面的帧数如何修改,都不会影响到我们的语句了。 |