PDA

Просмотр полной версии : Как отменить действие функции?


derhab
26.04.2002, 18:07
Имею следующую ситуацию:
В фильме 2 мувика.

В кадре:

function abc() {
mc.onEnterFrame = function() {
mc._x = mc._x+(_root._xmouse-mc._x)*0.08;
mc._y = mc._y+(_root._ymouse-mc._y)*0.08;
};
}
На втором мувике:

onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, 1)) {
_level0.abc();
}
}

Как остановить действие функции, т.е. прекратить драгание mc, когда курсор уходит из области второго мувика?
Помогите, плиз. Пробовал по разному, не выходит(

Nox Noctis
26.04.2002, 18:30
итак, 2 мувика:
– один зовут 'mc' и на нем никакого скрипта нету (его будем драгать)
– другой неважно как зовут и он является полем, над которым должен происходить драг

на мувик-поле повесь:
onClipEvent (load) {
dragAction = function () {
_parent.mc._x += (_root._xmouse-_parent.mc._x)*0.08;
_parent.mc._y += (_root._ymouse-_parent.mc._y)*0.08;
};
}
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, 1)) {
action = dragAction;
} else {
action = null;
}
action();
}
вот... :) так попроще наверное, и к тому же весь скрипт в одном окошке ;)

derhab
26.04.2002, 18:46
Спасибо большое! Я делал нечто подобное, но писал неправильно в поле value, вот так:
_root.mc.= _x + (_root._xmouse-_root.mc._x)*0.08;
_root.mc.= _y + (_root._ymouse-_root.mc._y)*0.08;

А так невозможно...

derhab
26.04.2002, 18:49
то есть :
_root.mc._x= _x + (_root._xmouse-_root.mc._x)*0.08;
_root.mc._y= _y + (_root._ymouse-_root.mc._y)*0.08;
:)

Nox Noctis
26.04.2002, 19:20
так прикольнее:
_root.createEmptyMovieClip("field", 1);
field.lineStyle(1, 0), field.beginFill(0xCCCCCC);
field.lineTo(400, 0), field.lineTo(400, 300);
field.lineTo(0, 300), field.lineTo(0, 0), field.endFill();
_root.createEmptyMovieClip("targ", 2);
targ.lineStyle(20, 255), targ.lineTo(.15, 0);
//
targ.onEnterFrame = function() {
this.newX = this._x+(_root._xmouse-this._x)*.08;
this.newY = this._y+(_root._ymouse-this._y)*.08;
if (field.hitTest(this.newX, this.newY, 1)) {
this._x=this.newX, this._y=this.newY;
}
};

derhab
26.04.2002, 19:34
Так, оно, конечно, прикольнее :) , но весит на 15 байт больше чем руками рисованный вариант ;) При равных параметрах обЪектов.

Nox Noctis
26.04.2002, 19:42
ну, я графику рисовал скриптом просто чтоб сюда полный скриптец выложить - который можно скопипастить и посмотреть что получается :)