这段时间都很懒惰,并不知道该去写一些什么才能更好突破,总是发觉不是缺这样就是那样,除了看书做一些事情不能让自己停止下来。这段时间总觉得自己很颓废,暂时记录一下最近看到一个轮盘旋转的做法,感觉还是挺好的。
先写下第一篇,后面慢慢改进。希望想到更好的主题可以进行写一下。
首先来讲轮盘旋转,很多想第一时间会想到抽奖,其实这个正是抽奖的其中一个常见案例。我们不管他是如何实现,把核心的说一下大概会让人明白当中的核心东西。
要旋转会想到速度,想到rotation 这些属性,而这些属性正是我们所需要的。因此在制作的时候,我们让rotation 不断加上一个变量让其产生旋转运动,这样就可以实现到一个轮盘旋转的效果。
基本步骤:
首先建立初速度var speed:Number=10;
我们演示的时候会通过一个图形,如shape类型,进行绘制一个指针,这样利用这个图形来进行旋转操作;
如:shape.rotation+=speed;//让轮盘旋转,可以看到它的旋转
如果想让指针缓慢停止可以让速度每一帧进行递减:speed-=0.2;这样的话 轮盘旋转的时候就会慢慢递减下来。
当条件触发: if(speed<=0) 我们停止运动;
注意到:trace(shape.rotation)有可能是正也有可能是负值。并不是我们想象那样是从0-360度那样。
//建立一个箭头类:
//建立一个圆盘
//建立一个简单按钮:
初步的开始:
当你构建完毕之后,其实这个只是一个很少很少的过程。因为这个简单旋转并不能满足我们的需求。更多的还是会留在后面。
为了改进这个。还是需要增加指定旋转圈数,可以随意定制命中局域,可以指定初始速度。
这些都是比较有趣,而且有意思的。
第二步进行改造:
下面进行一个测试。在期间设置 圈数,目标角度,初始角度,等几个参数。当中一个算等差项参考了一个flash 作者的计算方法。采用的办法是等差的公式。 前n项的和Sn=(首项+末项)×项数÷2 (sn=(a1+an)*n/2;)
公差 d=(an-a1)÷(n-1)
可以知道的事情是,指针在旋转的总的角度 是等于递减的时候的速度变化总和。
设置参数:
拥有这个计算办法后可以解决一些问题。
加上一个背景去,然后恰当修改一部分内容。这样一个简单轮盘旋转就可以实现了。