PDA

Просмотр полной версии : Отмена всего


Therion
20.05.2007, 03:25
как при переходе в следующий кадр отменить все запущенные в предыдущем кадре функции....
тоесть в первом кадре у меня запускается функция F, и припереходе в сдедующий кадр её надо удалить, пытался с помощю delete, но не полоучается
помогите пожалуйста:)

marat_sa
20.05.2007, 10:16
Попробуй удалять delet'om не функцию, а обработчик событий onEnterFrame или onLoad.

screamge
20.05.2007, 10:23
Незнаю насколько это удобно в твоём случае но можно ставить флаги, т.е:
if (!flag)

Kikasso
20.05.2007, 11:11
Функция отрабатывает один раз, код покажите.

Therion
21.05.2007, 00:31
ок
задача меняется...теперь надо просто вырубить запущенную функцию grav()....при нажатии на кнопку reset
по странной причине исходник прикрепить не могу.....
напишу код здесь:
clear();
Play.enabled = true;
function drag(obj4) {
for (i=0; i<obj4.length; i++) {
obj4[i].onPress = function() {
this.startDrag();
};
obj4[i].onRelease = function() {
this.stopDrag();
};
}
}
function grav(obj1, obj2, obj3, XXX, YYY) {
var Vx = XXX;
var G = 1;
var Vy = YYY;
var Nx = 0;
var Ny = 0;
moveTo(obj1._x, obj1._y);
lineStyle(1, 0x00FF00, 70);
obj1.onEnterFrame = function() {
lineTo(this._x, this._y);
if (this.hitTest(target)) {
unloadMovie(this);
}
for (i=0; i<obj2.length; i++) {
var X = this._x-obj2[i]._x;
var Y = this._y-obj2[i]._y;
var D = Math.sqrt(X*X+Y*Y);
if (D>10) {
F = 400/D;
R = Math.atan2(Y, X);
VFx = -Math.cos(R)*F;
VFy = -Math.sin(R)*F;
Vx = (VFx+Vx*G+Nx);
Vy = (VFy+Vy*G+Ny);
} else {
Vx = -Vx;
Vy = -Vy;
}
}
if (obj3.length>0) {
for (f=0; f<obj3.length; f++) {
XX = this._x-obj3[f]._x;
YY = this._y-obj3[f]._y;
Dn = Math.sqrt(XX*XX+YY*YY);
if (Dn>10) {
Fn = -400/Dn;
Rn = Math.atan2(YY, XX);
Nx = -Math.cos(Rn)*Fn;
Ny = -Math.sin(Rn)*Fn;
} else {
Vx = -Vx*0.9;
Vy = -Vy*0.9;
}
}
}
this._x += Vx/5;
this._y += Vy/5;
};
}
Play.onPress = function() {
obj5 = [P1, N1];
for (i=0; i<obj5.length; i++) {
obj5[i].enabled = false;
}
Play.enabled = false;
grav(P1, [N1], [], 0, 0);
};
drag([P1, N1]);
stop();
reset.onPress = function() {
for (i=0; i<obj5.length; i++) {
obj5[i].enabled = true;
}

delete grav(P1, [N1], [], 0, 0);////вот тут пытаюсь выключить функцию, она выключается и опять включается :(
};

помагите плиз

iNils
21.05.2007, 00:48
delete obj1.onEnterFrame

Therion
21.05.2007, 00:58
delete obj1.onEnterFrame
Гениально
спасибо!!!:yahoo: :yahoo:

iNils
21.05.2007, 01:18
Об этом во втором посте написали.

Therion
21.05.2007, 01:25
я уже понял, просто я такого ещё не разу не использовал(delete obj.onEnterFrame), поэтому и не совсем понял что именно Marat_sa имел введу :(