有些编程的人(不单是编写Actionscript的),一遇到自己没做过的东西,他就会感到无从下手了,进度停滞不前。其实作为一个编程人员,我个人认为不单止在编写代码的技巧方面要提供,更重要的是会总结经验,分析开发的步骤,总结出高效率和准确度高的编程方法。虽然想和做在实际中会存在一定的差别,但我们应该尽量缩短这些差别,我们不要求一次编译就能够将Bug减到最少,但也至少也要能将明显的Bug去除。这就关系到你所采用的编程方法了,现在我以小雪效果来讲解一下我所得出来得一些编程心得(这些心得并不只适用于Actionscript,而这里大多数都是搞Flash的所以我才以Actionscript为例)。
面向对象的方法确实不错的方法,因为它更加接近我们现实生活。这也是它取代结构化编程方法的原因之一。面对我们没有做过的东西,我们应该怎么样去解决呢?先别急着找相关的资料,好好的分析一下这个东西的结构(虽然是采用面向对象方法,但结构化的思想还是存在在面向对象方法中的),然后再对这个结构中的功能逐个去实现。对于下雪效果来说,总体可以分为两个对象:场景和雪。而场景是用来显示下雪的状态的,所以为了解决如何在场景中显示雪,我们可以用复制影片的方法。至于用duplicateMovieClip还是用attachMovie,那就要看你个人喜欢了。不过我个人认为用duplicateMovieClip比较好。所以我们可以在主场景中写下如下代码:
_root.onEnterFrame=function(){
_root.attachMovie("snow","snow"+i,_root.getNextHighestDepth());
i++;
}
现在我们可以看到屏幕上就只有左上角有一点雪花,为什么呢?那就是如果复制的影片如果不给它设定坐标值,它默认是(0,0)坐标点。所以我们可以对该代码进行进一步的功能加强。可以写成下面的代码:
_root.onEnterFrame=function(){
_root.attachMovie("snow","snow"+i,_root.getNextHighestDepth());
_root["snow"+i]._x=random(640);
_root["snow"+i]._y=random(480);
i++;
}
现在来看看,雪花已经可以在场景的任意位置上出现了。但我们要认识到现实中的雪花是从天而降的,把它转移到这个平面场景中就应该从场景的上方出现才对。所以我们这时候应该对复制出来的雪花进行位置限制,还要对雪花编写一个下落运动的代码。所以代码要写成下面这样:
//场景脚本
_root.onEnterFrame=function(){
_root.attachMovie("snow","snow"+i,_root.getNextHighestDepth());
_root["snow"+i]._x=random(640);
_root["snow"+i]._y=0;
i++;
}
//雪花脚本
this.onEnterFrame=function(){
this._y+=3;
if(this._y>480){
this.removeMovieClip();
}
}
到目前为止一个下雪的效果就出来了,如果觉得效果不好的话可以在这个基础上对代码加以改进,改到你满意为止。通过这个例子,我们可以看到其实编程就像是堆积木,一块一块地堆起来。我们编程也是一样要从最基本的框架做起,等到做好了框架在慢慢地修饰内部,只有做好了根基那么往后编写程序时才不会遇到大的问题。这其实又和起房子有点相同(我想软件工程这个名词也是由这个想到的吧~呵呵~)。所以说,做什么东西总有个先后顺序嘛,弄清楚了这个才有把握把它做出,才能避免花费不必要的时间。