![]() |
|
||||||||||
|
|
|
|||||
|
Ничего не понимаю !
Подскажите, где я ошибку допустил? Или что я не учел? фильм состоит из 1 кадра, на нем 2 объекта, которые называются asteroid и planet1 и код: ============================================== asteroid.mass = 20; planet1.mass = 100; tempSpeedX = 0; tempSpeedY = 0; attrForceX = function(planetName, tempSpeedX) { var factor1; distance = Math.sqrt(Math.pow(asteroid._x-planetName._x, 2) + Math.pow(asteroid._y - planetName._y, 2)); force = Number(_root.asteroid.mass)*Number(planetName.mass)/Math.pow(distance, 2); factor1 = force/distance; if (tempSpeedX >= 0 and _root.asteroid._x < planetName._x) { tempSpeedX += (planetName._x - _root.asteroid._x)*factor1; return tempSpeedX; } else if (tempSpeedX >=0 and _root.asteroid._x > planetName._x) { tempSpeedX -= (_root.asteroid._x-planetName._x)*factor1; return tempSpeedX; } else if (tempSpeedX < 0 and _root.asteroid._x < planetName._x) { tempSpeedX += (planetName._x-_root.asteroid._x)*factor1; return tempSpeedX; } else { tempSpeedX -= (_root.asteroid._x-planetName._x)*factor1; return tempSpeedX; } } attrForceY = function (planetName, tempSpeedY) { var factor1; distance = Math.sqrt(Math.pow(asteroid._x-planetName._x, 2) + Math.pow(asteroid._y - planetName._y, 2)); force = asteroid.mass*planetName.mass/Math.pow(distance, 2); factor1 = force/distance; if (tempSpeedY >= 0 and _root.asteroid._y <= planetName._y) { tempSpeedY += (planetName._y-_root.asteroid._y)*factor1; return tempSpeedY; } else if (tempSpeedY < 0 and _root.asteroid._y < planetName._y) { tempSpeedY += (planetName._y-_root.asteroid._y)*factor1; return tempSpeedY; } else if (tempSpeedY >= 0 and _root.asteroid._y > planetName._y) { tempSpeedY -= (_root.asteroid._y-planetName._y)*factor1; return tempSpeedY; } else { tempSpeedY -= (_root.asteroid._y-planetName._y)*factor1; return tempSpeedY; } } moveAsteroid = function (xSpeed, ySpeed) { _root.asteroid._x += xSpeed; _root.asteroid._y += ySpeed; } asteroid.onEnterFrame = function() { attrForceX(_root.planet1, tempSpeedX); attrForceY(_root.planet1, tempspeedY); moveAsteroid(tempSpeedX, tempSpeedY); trace (tempSpeedX + " " + tempSpeedY); } ============================================== Дык, вот чего я не могу понять, так это почему трейс показывает, что переменные tempSpeedX и tempSpeedY равны нулю? Ведь не должны! |
|
|||||
|
ты в качестве параметра функции передаешь значение переменной, а надо передавать ссылку на переменную.
|
|
|||||
|
asteroid.onEnterFrame = function() {
tempSpeedX= attrForceX(_root.planet1, tempSpeedX); tempspeedY= attrForceY(_root.planet1, tempspeedY); moveAsteroid(tempSpeedX, tempSpeedY); trace (tempSpeedX + " " + tempSpeedY); } |
|
|||||
|
можно сделать переменные объектами Number - тады они будут по ссылке передаваться(может я с этим гоню
)а можно не передавать их в качестве параметра, а дергать изнутри функции напрямую |
|
|||||
|
Точно, блин. Спасибо!
|
![]() |
Часовой пояс GMT +4, время: 10:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|