自定义缓动类

package dys.moveobject{
        import flash.events.Event;
        public class SlowObject {
                private var _object;
                private var _x;
                private var _y;
                private var _speed;
                private var _objectx;
                private var _objecty;
                private var _ismove:Boolean;
                public function SlowObject(object,x,y,speed=5) {
                        _object=object;
                        _x=x;
                        _y=y;
                        _speed=speed;
                        _ismove=false;
                }
                public function move() {
                        _ismove=true;
                        _object.parent.addEventListener(Event.ENTER_FRAME,onslow);
                }
                public function stop() {
                        _ismove=false;
                        _object.parent.removeEventListener(Event.ENTER_FRAME,onslow);
                }
                private function onslow(e:Event) {
                        _objectx=_object.x;
                        _objecty=_object.y;
                        _object.x+=(_x-_object.x)/_speed;
                        _object.y+=(_y-_object.y)/_speed;
                        if (_objectx==_object.x&&_objecty==_object.y) {
                                stop();
                                _object.x=_x;
                                _object.y=_y;
                        }
                }
                public function set x(a) {
                        _x=a;
                }
                public function get x() {
                        return _x;
                }
                public function set y(a) {
                        _y=a;
                }
                public function get y() {
                        return _y;
                }
                public function set object(a) {
                        _object=a;
                }
                public function get object() {
                        return _object;
                }
                public function set speed(a) {
                        _speed=a;
                }
                public function get speed() {
                        return _speed;
                }
                public function get ismove() {
                        return _ismove;
                }
        }
}
//用法:
import dys.moveobject.SlowObject;
var m:SlowObject = new SlowObject(m_mc, 100, 100, 10);
//m_mc 为要缓动的对象;
//100,100为要缓动的对象到达的X坐标,Y坐标;
//10为要缓动的对象的缓动速度越大越慢!

m.move();//开始向目的地方缓动;
m.stop();//停止缓动;
m.ismove//是不是在缓动进行中;
m.object//重新设置缓动对象;
m.speed//重新设置缓动速度(缓动速度越大越慢);
m.x=100;
m.y=100;
//重新设置缓动目标位置;
//说明缓动到达目的地方后会自动停止.

posted on 2012-11-09 23:19  笔墨丹青  阅读(369)  评论(0)    收藏  举报

导航