看到XNA的弹幕,于是也用SilverLight弄了个弹幕

      这两天在首页看到太多悲观的东西了,给大家来个有趣点的乐呵乐呵,改变下心情

      SilverLight的确是好东西,我把我们公司项目中的地图客户端用SilverLight改写之后,明细效果就是不一样,尤其是在回放轨迹的时候,那真叫平滑和稳定

      这个弹幕的生成其实很简单了,单发子弹的结构,其实是一个画布里面嵌入了一个圆, 其中分别对画布应用了角度转换,对圆应用了平移转换。 然后加入一个计时器,每秒钟执行若干次,每次都对角度增加7度(为啥使用7度?嘿嘿,那是为了防止射击死角的出现,随着度数增加,弹幕的缝隙会逐渐移动) 然后按下钮开始发射子弹,效果大家请看,子弹还是挺密集的哦。

      SilverLight似乎一个元素(UIELEMENT)只能应用一个转换。那么我需要两个转换怎么办呢?比如这里的子弹,既要发生平移,发射的角度也要变换。不过,一般来说我们习惯性会考虑通过三角函数之类来计算动画的起始点,来生成子弹的动画轨迹,不过我这里偷了个懒,直接在一个子画布上放一个子弹,这样就可以分别应用角度转换和平移转换了。而且算角度也容易极了,压根不用去管什么三角函数之类,平移动画也容易处理了,只要设置子弹的射程,而根本无需去计算什么坐标值之类的东西。 (不过这种做法只能用来做演示画面,这些子弹都打不死人,因为没办法做碰撞检测)

      //******

      改正:其实是可以应用多个转换的,今天才知道-____________-;

      有一个需要注意的地方是,生成了那么多子弹对象,当它们的动画结束之后,应该立刻将其从画布上移除。但是似乎没办法在动画板结束事件中取到那个子弹的对象,所以我只好将它放在一个字典里,动画完成后到字典里查出来,再移除。

     代码在此,具体效果见下面:P

     最后,大家各有各的烦恼,我本人不怕失业,找工作容易得很,对技术也有激情,工作上我是没啥问题,可是。。。我却怎么也找不到女朋友,看到我的同学们一个个为人父母,我心如刀绞。这时候,只有游戏或代码可以缓解心头的压力。我自己心态已经调整得不错了,相亲的事情也干过几次,或者收张好人卡,或者消失,再没音讯。没有一个剩女大人看得上我,怎一个惨字了得,唉。好了好了,请看Silverlight版弹幕,点击按钮开始发射子弹

原文地址:https://www.cnblogs.com/ashei/p/1502066.html