CTweenController.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. *
  3. * {
  4. * oNode
  5. * iFinalX
  6. * iFinalY
  7. * cbEaseX
  8. * cbEaseY
  9. * iDuration
  10. *
  11. * }
  12. *
  13. */
  14. function CTweenController( oConfig ){
  15. var _iCntTime = 0;
  16. var _oConfig = oConfig;
  17. var _iStartX = oConfig.oNode.getX();
  18. var _iStartY = oConfig.oNode.getY();
  19. var _bStart = false;
  20. this.tweenValue = function( fStart, fEnd, fLerp ){
  21. return fStart + fLerp *( fEnd-fStart);
  22. };
  23. this.start = function(){
  24. _bStart = true;
  25. }
  26. this.easeInCubic = function(t, b, c, d) {
  27. var tc=(t/=d)*t*t;
  28. return b+c*(tc);
  29. }
  30. this.easeBackInQuart = function(t, b, c, d) {
  31. var ts=(t/=d)*t;
  32. var tc=ts*t;
  33. return b+c*(2*ts*ts + 2*tc + -3*ts);
  34. };
  35. this.update = function(){
  36. if (_bStart == false){
  37. return false;
  38. }
  39. var fLerpX, fLerpY, fOffset;
  40. _iCntTime += s_iTimeElaps;
  41. if ( _iCntTime >= _oConfig.iDuration ){
  42. _iCntTime = _oConfig.iDuration;
  43. _bStart = false;
  44. }
  45. fLerpX = this.easeInCubic( _iCntTime, 0 ,1, _oConfig.iDuration);
  46. if ( _iCntTime <= _oConfig.iDuration/2 ){
  47. fLerpY = this.easeBackInQuart( _iCntTime, 0 ,1, _oConfig.iDuration);
  48. }else{
  49. fLerpY = this.easeBackInQuart( _iCntTime-(_oConfig.iDuration/2), 1 ,0, _oConfig.iDuration/2);
  50. }
  51. //trace("fLerpY: " + fLerpY );
  52. oConfig.oNode.setX(this.tweenValue( _iStartX, oConfig.iFinalX, fLerpX));
  53. // oConfig.oNode.setY(_iStartY + (fLerpY*20));
  54. //trace("Y: "+(_iStartY + fLerpY*20));
  55. };
  56. }