透过下雪效果得到的一些心得

接下来所写的只是我个人的感想,如果有不对的地方请大家指出来。浏览好友的时候看到他写的一个下雪效果,突然自己也想着做一个,不过我写的这篇文章并不是要介绍下雪效果的实现,而是想透过这个实例来让大家掌握一些方法。

     有些编程的人(不单是编写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();
}
}

     到目前为止一个下雪的效果就出来了,如果觉得效果不好的话可以在这个基础上对代码加以改进,改到你满意为止。通过这个例子,我们可以看到其实编程就像是堆积木,一块一块地堆起来。我们编程也是一样要从最基本的框架做起,等到做好了框架在慢慢地修饰内部,只有做好了根基那么往后编写程序时才不会遇到大的问题。这其实又和起房子有点相同(我想软件工程这个名词也是由这个想到的吧~呵呵~)。所以说,做什么东西总有个先后顺序嘛,弄清楚了这个才有把握把它做出,才能避免花费不必要的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值