Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как отменить действие функции? (http://www.flasher.ru/forum/showthread.php?t=30873)

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

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


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

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