Есть класс, в нем есть ф-ция гравитации для персонажа и смотрите есть переменная grav, ее я вывожу с помощью trace(grav) и мне постоянно почему то выводит значение 2, когда это значение должно меняется от положения персонажа по y. Данную ф-цию передаю в onClipEvent (enterFrame) который прописан на кнопке к примеру, обьясните почему переменная не меняет свое значение? почему постоянно 2, в кадре решил тоже проверить, тоже самое, потом добавил ф-цию которая содержала эти переменные и ее добавил в onClipEvent (load), выдавало NaN, после того как убрал var и оставил просто grav=0, все заработало, обьясните мне что это за бред ну я уже сума схожу от непонимания почему все так почему в классе значения постоянные, что я упускаю?

Код AS1/AS2:
class motion
{
var grav = 0;
var gravity = 2;
var touchingGround = false;
function gravit()
{
var isCat:Cat = new Cat();
_root.cat.y += grav;
grav += gravity;
trace(grav);
while (_root.ground.hitTest(_root.cat.x + 24, _root.cat.y + 56, true))
{
_root.cat.y -= gravity;
grav = 0;
}
if (_root.ground.hitTest(_root.cat.x + 22, _root.cat.y + 58, true))
{
touchingGround = true;
}
else
{
touchingGround = false;
}
if (Key.isDown(Key.UP) && touchingGround)
{
grav = isCat.maxJump;
_root.cat.gotoAndStop("jump");
}
}}