| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- function CHook(oSpriteHookClosed){
- var _iRotSpeed;
- var _iRotFactor;
- var _iXPos;
- var _iYPos;
- var _iDir;
- var _iMinRopeLen = 50;
-
- var _fRopeSpeed = HOOK_SPEED;
-
-
- var _iRopeLen = 0;
-
- var _vDir = {x:0,y:1};
- var _oLine;
- var _oLineGfx;
- var _oHookSprite;
-
- this._init = function(oSpriteHookClosed){
- _iRotFactor = 0;
- _iRotSpeed = 2;
-
- _oLineGfx = new createjs.Graphics();
- _oLineGfx.setStrokeStyle(2);
- _oLineGfx.beginStroke("#000");
- _oLineGfx.moveTo(HOOK_START_X,HOOK_START_Y);
- _oLineGfx.lineTo(HOOK_START_X,HOOK_START_Y+_iMinRopeLen);
- _oLine = new createjs.Shape(_oLineGfx);
- s_oStage.addChild(_oLine);
-
- _oHookSprite = createBitmap(oSpriteHookClosed);
- _oHookSprite.x = HOOK_START_X;
- _oHookSprite.y = HOOK_START_Y;
- _oHookSprite.regX = oSpriteHookClosed.width/2;
- _oHookSprite.regY = 0;
- s_oStage.addChild(_oHookSprite);
-
- this._drawLine();
- };
-
- this.reset = function(){
- _iRopeLen = 0;
- _iXPos = HOOK_START_X;
- _iYPos = HOOK_START_Y+_iMinRopeLen;
- };
-
- this.normalize = function(v){
-
- var len = Math.sqrt( v.x*v.x+v.y*v.y );
- if (len > 0 ){
- v.x/= len; v.y/=len;
- }
- };
-
- this.rotateVector2D = function( iAngle, v ) {
- var iX = v.x * Math.cos( iAngle ) + v.y * Math.sin( iAngle );
- var iY = v.x * (-Math.sin( iAngle )) + v.y * Math.cos( iAngle );
- v.x = iX;
- v.y = iY ;
- };
-
- this.toDegree = function(iAngleRad){
- return iAngleRad * (180/Math.PI);
- };
-
- this._drawLine = function(){
- var fLerp = Math.sin(_iRotFactor);
- _vDir.x = 0;
- _vDir.y = 1;
-
- var fCurAngle = ((Math.PI/2)*0.8) *fLerp;
-
- this.rotateVector2D( fCurAngle,_vDir);
- this.normalize(_vDir);
- var iNewX = _vDir.x * ( _iMinRopeLen + _iRopeLen);
- var iNewY = _vDir.y * ( _iMinRopeLen + _iRopeLen);
-
- _iXPos = HOOK_START_X+iNewX;
- _iYPos = HOOK_START_Y+iNewY;
-
- _oLineGfx.clear();
- _oLineGfx.setStrokeStyle(1);
- _oLineGfx.beginStroke("#000");
- _oLineGfx.moveTo(HOOK_START_X,HOOK_START_Y);
- _oLineGfx.lineTo(_iXPos,_iYPos);
-
- _oHookSprite.x = _iXPos;
- _oHookSprite.y = _iYPos;
- _oHookSprite.rotation = -(this.toDegree(fCurAngle));
- };
- this.updateRotation = function(iSpeed){
- _iRotFactor += iSpeed;
-
- this._drawLine();
- };
-
- this.updateMove = function(){
-
- _iRopeLen += _fRopeSpeed;
-
- this._drawLine();
-
- if(_oHookSprite.y > CANVAS_HEIGHT || _oHookSprite.x < 0 || _oHookSprite.x>CANVAS_WIDTH){
- s_oGame.hookOutOfBounds();
- }
- };
-
- this.updateMoveBack = function(iSlowDown){
- _iRopeLen -= (_fRopeSpeed-iSlowDown);
- this._drawLine();
-
- if( _iRopeLen < 0 ){
- s_oGame.changeState(STATE_HOOK_ROTATE);
- }
- };
-
- this.getPos = function(){
- return { x: _iXPos,
- y: _iYPos};
- };
-
- this.getCurDir = function(){
- return _iDir;
- };
-
- this.getRotationDeg = function(){
- return _oHookSprite.rotation;
- };
-
- this._init(oSpriteHookClosed);
- }
|