import Motion;
class WaveMotion extends Motion {
var amp:Number;
//振幅
var period:Number;
//周期
var offset:Number;
//偏移量
var timeShift:Number;
//时移
function getPosition(t:Number):Number {
if (t == undefined) {
t = this.time;
}
return (this.amp*Math.sin((t-this.timeShift)*(2*Math.PI)/this.period)+this.offset);
}
function setAmp(a:Number):Void {
if (a != undefined) {
this.amp = a;
}
}
function getAmp():Number {
return this.amp;
}
function setPeriod(p:Number):Void {
if (p != undefined) {
this.period = p;
}
}
function getPeriod():Number {
return this.period;
}
function setOffset(f:Number):Void {
if (f != undefined) {
this.offset = f;
}
}
function getOffset():Number {
return this.offset;
}
function settimeShift(t:Number):Void {
if (t != undefined) {
this.timeShift = t;
}
}
function gettimeShift():Number {
return this.timeShift;
}
function setFreq(f:Number):Void {
this.setPeriod(1/f);
}
function getFreq():Number {
return 1/this.getPeriod();
}
function setWavePhysics(amp:Number, period:Number, timeShift:Number, offset:Number) {
this.setAmp(amp);
this.setPeriod(period);
this.settimeShift(timeShift);
this.setOffset(offset);
}
/********************************************/
function WaveMotion(obj:MovieClip, prop:String, begin:Number, amp:Number, period:Number, duration:Number,timeShift:Number, useSeconds:Boolean) {
super(obj, prop, begin, duration, useSeconds);
this.setOffset(begin);
this.setAmp(amp);
this.setPeriod(period);
this.settimeShift(timeShift);
}
}
应用WaveMotion类可以轻松的创建波形动画:
在舞台上放置一个名为"ball"的电影剪辑,在主场景的时间轴上加上如下代码:
import WaveMotion;
var waveX:WaveMotion=new WaveMotion(ball,"_x",250,80,2,0,0,true);









