线性垂直运动
在 Wave1.as 文件中,加入了线性垂直运动,只是为我们制作动画增加一些灵感。以下是这个文件的代码:
package { import flash.display.Sprite; import flash.events.Event; public class Wave1 extends Sprite { private var ball:Ball; private var angle:Number = 0; private var centerY:Number = 200; private var range:Number = 50; private var xspeed:Number = 1; private var yspeed:Number = .05; public function Wave1() { init(); } private function init():void { ball = new Ball(); addChild(ball); ball.x = 0; addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { ball.x += xspeed; ball.y = centerY + Math.sin(angle) * range; angle += yspeed; } } }
心跳运动
使用正弦值作为一种工具,不仅仅只用于控制物理位置。在 Pulse.as 文件中,使用一个值来影响小球的缩放,实现一个心跳的效果,代码如下:
package { import flash.display.Sprite; import flash.events.Event; public class Pulse extends Sprite { private var ball:Ball; private var angle:Number = 0; private var centerScale:Number = 1; private var range:Number = .5; private var speed:Number = .1; public function Pulse() { init(); } private function init():void { ball = new Ball(); addChild(ball); ball.x = stage.stageWidth / 2; ball.y = stage.stageHeight / 2; addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { ball.scaleX = ball.scaleY = centerScale +
Math.sin(angle) * range; angle += speed; } } }
原理是一样的,centerScale表示100%的缩放比, range 表示范围, speed 表示速度。不仅如此,正弦波还在 alpha,rotation 等属性中应用。
双角波形
再给大家一种思想:设置两套数值 angle1 和 angle2,为它们各自增加一个中心点(center)和速度(speed)值。用一个正弦波作为一种属性,另一个正弦波作为另一种属性,比如位置或缩放。我不敢保证能够得到什么有用的结果,但这样做的话,就等于让这些函数自由发挥作用。
从 Random.as 文档类开始,这里面拥有两个角度(angle),两个速度(speed)和两个中心点(center),将其中一个角(angle1)作为小球的X坐标,另一个角(angle2)作为Y坐标。运行程序时,就像只虫子在房间里飞,虽然这些数字都是预先定义好的,但结果却没有什么规律可言。代码如下:
package { import flash.display.Sprite; import flash.events.Event; public class Random extends Sprite { private var ball:Ball; private var angleX:Number = 0; private var angleY:Number = 0; private var centerX:Number = 200; private var centerY:Number = 200; private var range:Number = 50; private var xspeed:Number = .07; private var yspeed:Number = .11; public function Random() { init(); } private function init():void { ball = new Ball(); addChild(ball); ball.x = 0; addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(event:Event):void { ball.x = centerX + Math.sin(angleX) * range; ball.y = centerY + Math.sin(angleY) * range; angleX += xspeed; angleY += yspeed; } } }
出处:蓝色理想
责任编辑:bluehearts
上一页 三角学应用 [6] 下一页 三角学应用 [8]
◎进入论坛RIA设计与应用版块参加讨论
|