Есть вот такой вот ролик:
http://chinacars.ru/img/des/visual.swf
Сейчас мне нужно добавить в него ещё одну машины и я хочу его переписать, чтобы анимация была программная. Например, чтобы автобус без торможения в середине пути ездил из одной крайней точки до другой.
Я написал свой класс, но по непонятной мне причине не работает Tween.
Car.as
Код:
import mx.transitions.*;
import mx.transitions.easing.*;
class Car {
public static var iMotionSteps = 50;
private static var _frame = 0;
private var bInMotion = false;
private var sDirection = null;
private var eObject = null;
private var oTween = null;
private var oTweenCounter = null;
private var iHomeX = 0;
private var iForwardX = 0;
private var iBackwardX = 0;
public function Car( _mc:MovieClip, _iHomeX, _iForwardX, _iBackwardX, _iMotionSteps ){
eObject = _mc;
iHomeX = _iHomeX;
iForwardX = _iForwardX;
iBackwardX = _iBackwardX;
iMotionSteps = _iMotionSteps;
oTween = new mx.transitions.Tween( eObject, '_x', mx.transitions.easing.Regular.easeInOut, eObject._x, eObject._x, 1);
}
public function Forward(){
this.sDirection = 'Forward';
this._Go( iForwardX );
}
public function Backward(){
this.sDirection = 'Backward';
this._Go( iBackwardX );
}
public function Home(){
this.sDirection = 'Home';
this._Go( iHomeX );
}
private function _Go( iX ){
trace( sDirection + ', ' + bInMotion + ', ' + iX );
if( !bInMotion ){
bInMotion = true;
oTween = new mx.transitions.Tween(eObject, '_x', mx.transitions.easing.Regular.easeInOut, eObject._x, iX, iMotionSteps);
oTweenCounter = new mx.transitions.Tween(eObject, '_frame', null, 0, iMotionSteps, iMotionSteps);
oTween.onMotionFinished = function(){
bInMotion = false;
}
oTweenCounter.onMotionFinished = function(){
eObject._frame = 0;
}
eObject.gotoAndPlay( 'Start' );
} else {
oTween.onMotionFinished = function(){
bInMotion = false;
switch( sDirection ){
case 'Forward': Forward(); break;
case 'Backward': Backward(); break;
case 'Home': Home(); break;
}
}
}
}
}
И в основном ролике:
Код:
import Car.as;
var oBus:Car = new Car( Bus, 150, 350, -100 );
На сцене уже расположен клип с именем Bus.
Почему-то не происходит Tween и, соответственно, не срабатывает Tween.onMotionFinished (
P.S. С классами во флеше первый раз работаю