Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Как остановить функцию во Flash?
ТвойWeb » WebMaster класс » Flash » Как остановить функцию во Flash?

Страниц (1): [1]
 

1. Alone - 16 Февраля, 2008 - 03:05:35 - перейти к сообщению
Есть например любая функция наподобии такой:
CODE:
function starField(x, y, n) {
for (var i = 0; i<n; i++) {
var star = this.createEmptyMovieClip("star"+i, i);
var dot = star.createEmptyMovieClip("dot", 0);
star._rotation = Math.random()*180;
star._x = x;
star._y = y;
dot.lineStyle(0, 0xFFFFFF, 200);
dot.moveTo(0, 1);
dot.lineTo(0, 0);
dot.onEnterFrame = mover;
dot.speed = Math.random()*100;
}
}
starField(400, 300, 150);


Т.е. функция вставляется в кадр и работает до конца ролика. Фиг остановишь Улыбка
Вопрос в том как остановить?
Причём остановить так чтобы остановить только её а не весь мувик.

Функция stop() естественно не подходит.
Подскажите плз...
Т.е. на конкретном кадре её нужно тормознуть не тормозя при этом весь фильм.
2. ETC - 16 Февраля, 2008 - 07:30:30 - перейти к сообщению
А где функция mover?
3. Alone - 16 Февраля, 2008 - 08:36:44 - перейти к сообщению
ETC пишет:
А где функция mover?

это я пример привёл.

Если это прниципиально то вот:

CODE:
function mover() {
this._y += this.speed;
this._yscale += 10;
this.speed++;
if (this._y>500) {
this._y = 0;
this.speed = Math.random()*10;
this._yscale = 100;
}
}
4. ETC - 16 Февраля, 2008 - 09:16:53 - перейти к сообщению
Надо пробежаться по массиву всех dot и сделать delete dot.onEnterFrame у них.
5. Alone - 16 Февраля, 2008 - 10:06:35 - перейти к сообщению
Чёт сложно как-то.
А просто запретить как-нить функцию во флеше разве нету типа stop()
Вообще не понятно почему функция продолжает работать когда фрейма с нею уже нет (закончился) По идее если фрейм заканчивается то это значит конец работы...

Ну если этих самых dot в функции нет то тогда как?
6. ETC - 16 Февраля, 2008 - 10:11:38 - перейти к сообщению
stop() останавливает воспроизведение клипа, а не кода в нем.
Я бы посоветовал для начала разобраться к приведенном коде, а уж потом задавать вопросы.
7. Alone - 16 Февраля, 2008 - 13:02:11 - перейти к сообщению
ETC пишет:
stop() останавливает воспроизведение клипа, а не кода в нем.

Это понятно.
Но неужели нет никакой фишки останавливающей функцию?
Такие вещи вроде часто должны юзаться. Это тяжко разбираться с кодом каждой функции чтобы её останавливать в нужном месте.

А если функции на сотни строк.....
Что-то тут не так.
Должна быть какая-то фишка без головоломки с кодом.....
8. ETC - 16 Февраля, 2008 - 13:17:44 - перейти к сообщению
Для остановки вызова onEnterFrame из первого кода нужно пройтись по всем созданным клипам dot и удалить обработчик.

Нет никаких фишек, ты сто раз в сотне мест включил функцию, значит должен выключить её точно так же в той же сотне мест.
9. Alone - 16 Февраля, 2008 - 13:55:55 - перейти к сообщению
ETC

Ладно.
Вот этот код которы я привёл (все две части) у меня находятся только в одном фрейме.
Больше нет нигде.
Что я должен сделать?

Просто написать в конце этого кода в этом фрейме это:
delete dot.onEnterFrame

Или в том фрейме где я хочу чтобы эта функция больше не работала?
10. ETC - 16 Февраля, 2008 - 14:04:09 - перейти к сообщению
Я уже написал ответ в четвертом посте.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0239]     [ Gzipped ]