home *** CD-ROM | disk | FTP | other *** search
/ Champak 110 / jogo-disk-110.iso / Games / tobby_sucuri.swf / scripts / frame_31 / DoAction.as
Text File  |  2008-11-12  |  7KB  |  256 lines

  1. function swimType1(nthis)
  2. {
  3.    var _loc1_ = this;
  4.    var _loc2_ = nthis;
  5.    _loc1_.myNum = _loc2_.myNum;
  6.    _loc1_.px = _loc2_.px;
  7.    _loc1_.py = _loc2_.py;
  8.    _loc1_.limitHx = _loc2_.limitHx;
  9.    _loc1_.limitHy = _loc2_.limitHy;
  10.    _loc1_.ParentMC = _loc2_;
  11.    _loc1_.vx = _root.randomInt(20) - 10;
  12.    _loc1_.vy = _root.randomInt(20) - 10;
  13.    _loc1_.nv = [];
  14.    _loc1_.speed = Math.sqrt(_loc1_.vx * _loc1_.vx + _loc1_.vy * _loc1_.vy);
  15.    if(_loc2_.kingyoNum == 2)
  16.    {
  17.       _loc1_.maxSpeed = 10;
  18.       _loc1_.minSpeed = 3;
  19.    }
  20.    else
  21.    {
  22.       _loc1_.maxSpeed = 5;
  23.       _loc1_.minSpeed = 1;
  24.    }
  25.    _loc1_.rotation = 0;
  26.    _loc1_.scopeDistance = 100;
  27.    _loc1_.scopeAngle = 50;
  28.    _loc1_.CohesionDegree = 0.3;
  29.    _loc1_.alingmentDegree = 0.5;
  30.    _loc1_.pCnt = 0;
  31.    _loc1_.cNum = _loc1_.myNum % 10;
  32.    _loc1_.nv = normalize(_loc1_.vx,_loc1_.vy);
  33.    var _loc3_ = Math.atan2(_loc1_.vx,- _loc1_.vy);
  34.    _loc1_.rotation = _loc3_ / 0.017453292519943295;
  35.    _loc1_.oldSpeed = _loc1_.speed;
  36. }
  37. swimType1.prototype.initLoc = function(nx, ny)
  38. {
  39.    this.px = nx;
  40.    this.py = ny;
  41. };
  42. swimType1.prototype.swim = function()
  43. {
  44.    var _loc1_ = this;
  45.    if(_loc1_.cNum == _root.allMC.pCnt)
  46.    {
  47.       r = _loc1_.search();
  48.       0;
  49.       if(r[0] != undefined)
  50.       {
  51.          _loc1_.separation(r);
  52.          _loc1_.alingment(r);
  53.          _loc1_.cohesion();
  54.          _loc1_.speed *= 0.99;
  55.       }
  56.       else
  57.       {
  58.          _loc1_.soloMove();
  59.       }
  60.       if(_loc1_.speed - _loc1_.oldSpeed > 3)
  61.       {
  62.          _loc1_.ParentMC.anmMC.gotoAndPlay("swim");
  63.       }
  64.    }
  65.    _loc1_.nv = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
  66.    var nx = _loc1_.px + _loc1_.nv.x * _loc1_.speed;
  67.    var _loc3_ = _loc1_.py + _loc1_.nv.y * _loc1_.speed;
  68.    var r = _loc1_.CheckforwardHit(nx,_loc3_);
  69.    if(r != "ok")
  70.    {
  71.       var ntv = _loc1_.normalize(r.vx,r.vy);
  72.       var _loc2_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
  73.       _loc1_.vx = _loc2_.x + ntv.x;
  74.       _loc1_.vy = _loc2_.y + ntv.y;
  75.    }
  76.    _loc1_.px = nx;
  77.    _loc1_.py = _loc3_;
  78.    _loc1_.wallEvasion();
  79.    var r = Math.atan2(_loc1_.vx,- _loc1_.vy);
  80.    _loc1_.rotation = r / 0.017453292519943295;
  81.    _loc1_.oldSpeed = _loc1_.speed;
  82.    return [_loc1_.px,_loc1_.py,_loc1_.rotation];
  83. };
  84. swimType1.prototype.soloMove = function()
  85. {
  86.    var _loc1_ = this;
  87.    _loc1_.speed *= 0.95;
  88.    if(_loc1_.speed < _loc1_.minSpeed)
  89.    {
  90.       _loc1_.speed = _loc1_.maxSpeed;
  91.    }
  92. };
  93. swimType1.prototype.CheckforwardHit = function(nx, ny)
  94. {
  95.    var _loc1_ = this;
  96.    var _loc2_ = ny;
  97.    var _loc3_ = nx;
  98.    i = 0;
  99.    while(i < _loc1_.dList.length)
  100.    {
  101.       if(_loc1_.dList[i].targetMC.fishMC.hitMC.hitTest(_loc3_,_loc2_,true))
  102.       {
  103.          if(_loc1_.dList[i].targetMC != _loc1_)
  104.          {
  105.             return _loc1_.dList[i].targetMC;
  106.          }
  107.       }
  108.       i++;
  109.    }
  110.    return "ok";
  111. };
  112. swimType1.prototype.search = function()
  113. {
  114.    var _loc2_ = this;
  115.    _loc2_.dList = [];
  116.    i = 0;
  117.    while(i < _root.kingyoMCList.length)
  118.    {
  119.       var targetMC = _root.kingyoMCList[i];
  120.       var dx = _loc2_.px - targetMC._x;
  121.       var _loc3_ = _loc2_.py - targetMC._y;
  122.       var distance = Math.sqrt(dx * dx + _loc3_ * _loc3_);
  123.       if(distance <= _loc2_.scopeDistance)
  124.       {
  125.          var _loc1_ = new Object();
  126.          _loc1_.distance = distance;
  127.          _loc1_.targetMC = targetMC;
  128.          _loc2_.dList.push(_loc1_);
  129.       }
  130.       i++;
  131.    }
  132.    _loc2_.dList.sortOn("distance");
  133.    if(_loc2_.dList.length > 1)
  134.    {
  135.       var targetMC = _loc2_.dList[1].targetMC;
  136.       var distance = _loc2_.dList[1].distance;
  137.    }
  138.    else
  139.    {
  140.       0;
  141.       var targetMC = undefined;
  142.       var distance = 0;
  143.    }
  144.    return [targetMC,distance];
  145. };
  146. swimType1.prototype.wallEvasion = function()
  147. {
  148.    var _loc1_ = this;
  149.    var _loc2_ = _root;
  150.    if(_loc1_.px <= _loc2_.limitLeft + _loc1_.limitHx)
  151.    {
  152.       _loc1_.px = _loc2_.limitLeft + _loc1_.limitHx;
  153.       _loc1_.vx = - _loc1_.vx;
  154.       _loc1_.ParentMC.anmMC.gotoAndPlay("swim");
  155.    }
  156.    if(_loc1_.px >= _loc2_.limitRight - _loc1_.limitHx)
  157.    {
  158.       _loc1_.px = _loc2_.limitRight - _loc1_.limitHx;
  159.       _loc1_.vx = - _loc1_.vx;
  160.       _loc1_.ParentMC.anmMC.gotoAndPlay("swim");
  161.    }
  162.    if(_loc1_.py <= _loc2_.limitTop + _loc1_.limitHy)
  163.    {
  164.       _loc1_.py = _loc2_.limitTop + _loc1_.limitHy;
  165.       _loc1_.vy = - _loc1_.vy;
  166.       _loc1_.ParentMC.anmMC.gotoAndPlay("swim");
  167.    }
  168.    if(_loc1_.py >= _loc2_.limitBottom - _loc1_.limitHy)
  169.    {
  170.       _loc1_.py = _loc2_.limitBottom - _loc1_.limitHy;
  171.       _loc1_.vy = - _loc1_.vy;
  172.       _loc1_.ParentMC.anmMC.gotoAndPlay("swim");
  173.    }
  174. };
  175. swimType1.prototype.separation = function(r)
  176. {
  177.    var _loc1_ = this;
  178.    var _loc3_ = r[0];
  179.    var distance = r[1];
  180.    var naiseki = (_loc3_._x - _loc1_.ParentMC._x) * _loc1_.vx + (_loc3_._y - _loc1_.ParentMC._y) * _loc1_.vy;
  181.    var _loc2_ = 1;
  182.    if(distance < 150)
  183.    {
  184.       _loc2_ = -1;
  185.    }
  186.    if(naiseki > 0)
  187.    {
  188.       _loc1_.speed += 3 * _loc2_;
  189.    }
  190.    else if(naiseki < 0)
  191.    {
  192.       _loc1_.speed -= 3 * _loc2_;
  193.    }
  194.    if(_loc1_.speed > _loc1_.maxSpeed)
  195.    {
  196.       _loc1_.speed = _loc1_.maxSpeed;
  197.    }
  198.    else if(_loc1_.speed < _loc1_.minSpeed)
  199.    {
  200.       _loc1_.speed = _loc1_.minSpeed;
  201.    }
  202. };
  203. swimType1.prototype.alingment = function(r)
  204. {
  205.    var _loc1_ = this;
  206.    var _loc2_ = r[0];
  207.    0;
  208.    if(_loc2_ != undefined)
  209.    {
  210.       var nv = _loc1_.normalize(_loc2_.swim.vx,_loc2_.swim.vy);
  211.       var _loc3_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
  212.       _loc1_.vx = _loc3_.x + nv.x * _loc1_.alingmentDegree;
  213.       _loc1_.vy = _loc3_.y + nv.y * _loc1_.alingmentDegree;
  214.    }
  215. };
  216. swimType1.prototype.cohesion = function()
  217. {
  218.    var _loc1_ = this;
  219.    var _loc2_ = _root;
  220.    if(_loc2_.cMode == "mouse")
  221.    {
  222.       var dx = _loc2_._xmouse - _loc1_.px;
  223.       var dy = _loc2_._ymouse - _loc1_.py;
  224.    }
  225.    else
  226.    {
  227.       var dx = _loc2_.allMC.px - _loc1_.px;
  228.       var dy = _loc2_.allMC.py - _loc1_.py;
  229.    }
  230.    var _loc3_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
  231.    var nv = _loc1_.normalize(dx,dy);
  232.    _loc1_.vx = _loc3_.x + nv.x * _loc1_.CohesionDegree;
  233.    _loc1_.vy = _loc3_.y + nv.y * _loc1_.CohesionDegree;
  234. };
  235. swimType1.prototype.normalize = function(nx, ny)
  236. {
  237.    var _loc2_ = ny;
  238.    var _loc3_ = nx;
  239.    var _loc1_ = Math.sqrt(_loc3_ * _loc3_ + _loc2_ * _loc2_);
  240.    if(_loc1_ > 0)
  241.    {
  242.       _loc3_ /= _loc1_;
  243.       _loc2_ /= _loc1_;
  244.    }
  245.    else
  246.    {
  247.       _loc3_ = 0;
  248.       _loc2_ = 0;
  249.    }
  250.    var nv = new Object();
  251.    nv.x = _loc3_;
  252.    nv.y = _loc2_;
  253.    nv.p = _loc1_;
  254.    return nv;
  255. };
  256.