home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 110
/
jogo-disk-110.iso
/
Games
/
tobby_sucuri.swf
/
scripts
/
frame_31
/
DoAction.as
Wrap
Text File
|
2008-11-12
|
7KB
|
256 lines
function swimType1(nthis)
{
var _loc1_ = this;
var _loc2_ = nthis;
_loc1_.myNum = _loc2_.myNum;
_loc1_.px = _loc2_.px;
_loc1_.py = _loc2_.py;
_loc1_.limitHx = _loc2_.limitHx;
_loc1_.limitHy = _loc2_.limitHy;
_loc1_.ParentMC = _loc2_;
_loc1_.vx = _root.randomInt(20) - 10;
_loc1_.vy = _root.randomInt(20) - 10;
_loc1_.nv = [];
_loc1_.speed = Math.sqrt(_loc1_.vx * _loc1_.vx + _loc1_.vy * _loc1_.vy);
if(_loc2_.kingyoNum == 2)
{
_loc1_.maxSpeed = 10;
_loc1_.minSpeed = 3;
}
else
{
_loc1_.maxSpeed = 5;
_loc1_.minSpeed = 1;
}
_loc1_.rotation = 0;
_loc1_.scopeDistance = 100;
_loc1_.scopeAngle = 50;
_loc1_.CohesionDegree = 0.3;
_loc1_.alingmentDegree = 0.5;
_loc1_.pCnt = 0;
_loc1_.cNum = _loc1_.myNum % 10;
_loc1_.nv = normalize(_loc1_.vx,_loc1_.vy);
var _loc3_ = Math.atan2(_loc1_.vx,- _loc1_.vy);
_loc1_.rotation = _loc3_ / 0.017453292519943295;
_loc1_.oldSpeed = _loc1_.speed;
}
swimType1.prototype.initLoc = function(nx, ny)
{
this.px = nx;
this.py = ny;
};
swimType1.prototype.swim = function()
{
var _loc1_ = this;
if(_loc1_.cNum == _root.allMC.pCnt)
{
r = _loc1_.search();
0;
if(r[0] != undefined)
{
_loc1_.separation(r);
_loc1_.alingment(r);
_loc1_.cohesion();
_loc1_.speed *= 0.99;
}
else
{
_loc1_.soloMove();
}
if(_loc1_.speed - _loc1_.oldSpeed > 3)
{
_loc1_.ParentMC.anmMC.gotoAndPlay("swim");
}
}
_loc1_.nv = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
var nx = _loc1_.px + _loc1_.nv.x * _loc1_.speed;
var _loc3_ = _loc1_.py + _loc1_.nv.y * _loc1_.speed;
var r = _loc1_.CheckforwardHit(nx,_loc3_);
if(r != "ok")
{
var ntv = _loc1_.normalize(r.vx,r.vy);
var _loc2_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
_loc1_.vx = _loc2_.x + ntv.x;
_loc1_.vy = _loc2_.y + ntv.y;
}
_loc1_.px = nx;
_loc1_.py = _loc3_;
_loc1_.wallEvasion();
var r = Math.atan2(_loc1_.vx,- _loc1_.vy);
_loc1_.rotation = r / 0.017453292519943295;
_loc1_.oldSpeed = _loc1_.speed;
return [_loc1_.px,_loc1_.py,_loc1_.rotation];
};
swimType1.prototype.soloMove = function()
{
var _loc1_ = this;
_loc1_.speed *= 0.95;
if(_loc1_.speed < _loc1_.minSpeed)
{
_loc1_.speed = _loc1_.maxSpeed;
}
};
swimType1.prototype.CheckforwardHit = function(nx, ny)
{
var _loc1_ = this;
var _loc2_ = ny;
var _loc3_ = nx;
i = 0;
while(i < _loc1_.dList.length)
{
if(_loc1_.dList[i].targetMC.fishMC.hitMC.hitTest(_loc3_,_loc2_,true))
{
if(_loc1_.dList[i].targetMC != _loc1_)
{
return _loc1_.dList[i].targetMC;
}
}
i++;
}
return "ok";
};
swimType1.prototype.search = function()
{
var _loc2_ = this;
_loc2_.dList = [];
i = 0;
while(i < _root.kingyoMCList.length)
{
var targetMC = _root.kingyoMCList[i];
var dx = _loc2_.px - targetMC._x;
var _loc3_ = _loc2_.py - targetMC._y;
var distance = Math.sqrt(dx * dx + _loc3_ * _loc3_);
if(distance <= _loc2_.scopeDistance)
{
var _loc1_ = new Object();
_loc1_.distance = distance;
_loc1_.targetMC = targetMC;
_loc2_.dList.push(_loc1_);
}
i++;
}
_loc2_.dList.sortOn("distance");
if(_loc2_.dList.length > 1)
{
var targetMC = _loc2_.dList[1].targetMC;
var distance = _loc2_.dList[1].distance;
}
else
{
0;
var targetMC = undefined;
var distance = 0;
}
return [targetMC,distance];
};
swimType1.prototype.wallEvasion = function()
{
var _loc1_ = this;
var _loc2_ = _root;
if(_loc1_.px <= _loc2_.limitLeft + _loc1_.limitHx)
{
_loc1_.px = _loc2_.limitLeft + _loc1_.limitHx;
_loc1_.vx = - _loc1_.vx;
_loc1_.ParentMC.anmMC.gotoAndPlay("swim");
}
if(_loc1_.px >= _loc2_.limitRight - _loc1_.limitHx)
{
_loc1_.px = _loc2_.limitRight - _loc1_.limitHx;
_loc1_.vx = - _loc1_.vx;
_loc1_.ParentMC.anmMC.gotoAndPlay("swim");
}
if(_loc1_.py <= _loc2_.limitTop + _loc1_.limitHy)
{
_loc1_.py = _loc2_.limitTop + _loc1_.limitHy;
_loc1_.vy = - _loc1_.vy;
_loc1_.ParentMC.anmMC.gotoAndPlay("swim");
}
if(_loc1_.py >= _loc2_.limitBottom - _loc1_.limitHy)
{
_loc1_.py = _loc2_.limitBottom - _loc1_.limitHy;
_loc1_.vy = - _loc1_.vy;
_loc1_.ParentMC.anmMC.gotoAndPlay("swim");
}
};
swimType1.prototype.separation = function(r)
{
var _loc1_ = this;
var _loc3_ = r[0];
var distance = r[1];
var naiseki = (_loc3_._x - _loc1_.ParentMC._x) * _loc1_.vx + (_loc3_._y - _loc1_.ParentMC._y) * _loc1_.vy;
var _loc2_ = 1;
if(distance < 150)
{
_loc2_ = -1;
}
if(naiseki > 0)
{
_loc1_.speed += 3 * _loc2_;
}
else if(naiseki < 0)
{
_loc1_.speed -= 3 * _loc2_;
}
if(_loc1_.speed > _loc1_.maxSpeed)
{
_loc1_.speed = _loc1_.maxSpeed;
}
else if(_loc1_.speed < _loc1_.minSpeed)
{
_loc1_.speed = _loc1_.minSpeed;
}
};
swimType1.prototype.alingment = function(r)
{
var _loc1_ = this;
var _loc2_ = r[0];
0;
if(_loc2_ != undefined)
{
var nv = _loc1_.normalize(_loc2_.swim.vx,_loc2_.swim.vy);
var _loc3_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
_loc1_.vx = _loc3_.x + nv.x * _loc1_.alingmentDegree;
_loc1_.vy = _loc3_.y + nv.y * _loc1_.alingmentDegree;
}
};
swimType1.prototype.cohesion = function()
{
var _loc1_ = this;
var _loc2_ = _root;
if(_loc2_.cMode == "mouse")
{
var dx = _loc2_._xmouse - _loc1_.px;
var dy = _loc2_._ymouse - _loc1_.py;
}
else
{
var dx = _loc2_.allMC.px - _loc1_.px;
var dy = _loc2_.allMC.py - _loc1_.py;
}
var _loc3_ = _loc1_.normalize(_loc1_.vx,_loc1_.vy);
var nv = _loc1_.normalize(dx,dy);
_loc1_.vx = _loc3_.x + nv.x * _loc1_.CohesionDegree;
_loc1_.vy = _loc3_.y + nv.y * _loc1_.CohesionDegree;
};
swimType1.prototype.normalize = function(nx, ny)
{
var _loc2_ = ny;
var _loc3_ = nx;
var _loc1_ = Math.sqrt(_loc3_ * _loc3_ + _loc2_ * _loc2_);
if(_loc1_ > 0)
{
_loc3_ /= _loc1_;
_loc2_ /= _loc1_;
}
else
{
_loc3_ = 0;
_loc2_ = 0;
}
var nv = new Object();
nv.x = _loc3_;
nv.y = _loc2_;
nv.p = _loc1_;
return nv;
};