Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   Где ошибка? (http://www.flasher.ru/forum/showthread.php?t=57727)

Malax 30.04.2004 16:51

Где ошибка?
 
Ничего не понимаю !
Подскажите, где я ошибку допустил? Или что я не учел?
фильм состоит из 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 равны нулю? Ведь не должны!

mishinaelle 30.04.2004 18:50

ты в качестве параметра функции передаешь значение переменной, а надо передавать ссылку на переменную.

silin 30.04.2004 18:59

asteroid.onEnterFrame = function() {
tempSpeedX= attrForceX(_root.planet1, tempSpeedX);
tempspeedY= attrForceY(_root.planet1, tempspeedY);
moveAsteroid(tempSpeedX, tempSpeedY);
trace (tempSpeedX + " " + tempSpeedY);
}

silin 30.04.2004 19:11

Цитата:

а надо передавать ссылку на переменную
а можно ли на нумбер организовать ссылку?..

mishinaelle 30.04.2004 19:23

можно сделать переменные объектами Number - тады они будут по ссылке передаваться(может я с этим гоню :( )
а можно не передавать их в качестве параметра, а дергать изнутри функции напрямую

silin 30.04.2004 19:29

не передаются (попробывал), а вот второе поскладнее будет

Malax 01.05.2004 03:33

Точно, блин. Спасибо!


Часовой пояс GMT +4, время: 11:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.