Просмотр полной версии : Остановка сценария в AS
Доброго дня!
Может кто-то сталкивался с вопросом остановки выполнения сценария, написанного в AS2 на определённое время. Сценарий однокадровый. У меня никак не выходит написать для этого функцию, работающую через setInterval (мне кажется этот путь оптимальным). Вот мой последний вариант (к сожалению - нерабочий). Может кто сможет мне подсказать правильный путь:
if (!i) {
var i:Number = 0;
}
function func(i) {
i++;
trace(i);
return i;
}
setInterval(func, 1000, i);
По моим соображениям, трассировка должна выдавать секундные метки с увеличением на единицу, а выдаёт 1 постоянно.
Заранее спасибо!!!
Однокадровый ас2? Такой бывает?
Конечно бывает. Это называется централизованный скрипт. Всё выполняется независимо от timeline.
Конечно бывает. Это называется централизованный скрипт. Всё выполняется независимо от timeline.То что вы пишете это "бред". Скрипт выполняется в кадре в любом случаи. Я вам уже писал, чтобы функция невыполнялась, ее не нужно вызывать.
Дорогой iNils, я отлично понял то, что Вы хотели мне сказать.
Все знают, что если есть в кадре скрипт, то он будет выполняться. Если не хочешь, чтобы функция не выполнялась - не запускай её. А есть сценарии, которым для выполнения не требуется timeline - это тоже реальность.
Я обратился на форум с конкретным вопросом и хотел бы услышать не менее конкретный ответ: "Есть ли возможность останавливать выполнение скрипта на определённое время, не прибегая к помощи timeline?" И всё...
Кому это кажется бредом?
Буду благодарен за практические советы и рекомендации по данному вопросу.
Не вижу в моих словах "бреда". Все знают, что если есть в кадре скрипт, то он будет выполняться. Если не хочешь, чтобы функция не выполнялась - не запускай её. А есть сценарии, которым для выполнения не требуется timeline - это тоже реальность.
В флэше любой объект, любая функция, любой мувиклип имеет свой кадр на таймлайне ( покрайней мере в АС1-2, в ас3 все наоборот)
так что независомо от таймлайна ниче не работает, как бы это грустно не было.
даже setInterval зависит от FPS, хотя не понятно о чем думали разработчики
o = { i: 0, foo: function () { this.i++; trace ('>> ' + this.i); } };
setInterval (o, 'foo', 1000);
да кстати однокадрового АС2 не бывает
АС2 пишется в классах, которые являются внешними файлами.
А есть сценарии, которым для выполнения не требуется timeline - это тоже реальность.
Я обратился на форум с конкретным вопросом и хотел бы услышать не менее конкретный ответ: "Есть ли возможность останавливать выполнение скрипта на определённое время, не прибегая к помощи timeline?" И всё...
Кому это кажется бредом?
Буду благодарен за практические советы и рекомендации по данному вопросу.Вы не можите взять и остановить выполнение любого скрипта. Я уже говорил, что думать о таких вещах надо заранее. Если вы не умеете читать, это не значит, что надо задавать один и тот же вопрос в разных топиках.
я могу остановить любой сценарий в флэше
for(var i=-10000000;i<10000000;i++)
{
createEmptyMovieClip();
new XML();
mx.events.EventDispatcher.initialize(this)
//в зависимости от скорости процессора можно еще всяких функций навызывать
}
я могу остановить любой сценарий в флэше
for(var i=-10000000;i<10000000;i++)
{
createEmptyMovieClip();
new XML();
mx.events.EventDispatcher.initialize(this)
//в зависимости от скорости процессора можно еще всяких функций навызывать
}
Это не остановка, это зависание приложения.
я тоже могу остановить либой скрипт (только его потом запустить обратно не удастся)
function f () { f () }; f ();
я тоже могу остановить либой скрипт (только его потом запустить обратно не удастся)
function f () { f () }; f ();
дальше 256 не уйдет, но это не в счет, также как и то что Давид предложил.
Огомная благодароность 7thsky за прекрасно работающий скрипт. Это как раз то, что я искал. Но не совсем понимаю его конструкцию:
o = { i: 0, foo: function () { this.i++; trace ('>> ' + this.i); } };
Если есть возможность и время, поясните что представляет собой о. Я ещё не настолько грамотен в AS.
Огомная благодароность 7thsky за прекрасно работающий скрипт. Это как раз то, что я искал. Но не совсем понимаю его конструкцию:
o = { i: 0, foo: function () { this.i++; trace ('>> ' + this.i); } };
Если есть возможность и время, поясните что представляет собой о. Я ещё не настолько грамотен в AS.
trace ("control point 1");
o = {i:0, foo:function () {
this.i++;
trace ('>> ' + this.i);
}};
setInterval(o, 'foo', 1000);
trace ("control point 2");
И что тут работающего?
А Nirth-у могу заметить, что вопрос был не об однокадровом AS2, а об однокадровом сценарии.
Проверь:
var j=10;
o = {i:0, foo:function () {
this.i++;
if (this.i<=j) {
trace('>> '+this.i);
}else {stop();}
}};
setInterval(o, 'foo', 1000);
Останавливается через 10 секунд.
Проверь:
var j=10;
o = {i:0, foo:function () {
this.i++;
if (this.i<=j) {
trace('>> '+this.i);
}else {stop();}
}};
setInterval(o, 'foo', 1000);
Останавливается через 10 секунд.Если вы хотели получить ЭТО, то я вам советую научиться ПРАВИЛЬНО формулировать вопросы.
А что же было непонятного? Я с самого начала об этом говорил.
Возникла ещё одна сложность:
trace("start");
timer(10);
function timer(j):Void {
o = {i:0, foo:function () {
this.i++;
if (this.i<=j) {
trace('>> '+this.i);
} else {
clearInterval(id);
return;
}
}};
var id = setInterval(o, 'foo', 1000);
}
trace("finish");
Выводит start, finish, а уж затем метки времени. Разве скрипт выполняется не построчно?
построчно, в данном случае он выполнился построчто.
ты вызвал функцию trace, потом вызвал функцию timer, которая создала интервал, сразу после вызова, ты вызвал функцию trace, она вызвалась, и потом каждую секунду вызывается твой таймер, как ты и записал
St. Father
06.07.2006, 08:28
А я тоже умею останавливать сценарии в кадре!!!!!
trace("a");
return
trace("b");
:D простите, не сдержался...
А что же было непонятного? Я с самого начала об этом говорил.
Обиатимся к самому вопросу:
Может кто-то сталкивался с вопросом остановки выполнения сценария, написанного в AS2 на определённое время.Из этого я сделал вывод, что ты хочешь начать выполнять сценарий, потом временно прекратить, а потом продолжить. Тот код который дал тебе 7thsky™, и который ты назвал тем "что тебе было нужно", этого не делает.
А фраза
Выводит start, finish, а уж затем метки времени. Разве скрипт выполняется не построчно? показывает, что ты не понимаешь суть работы setInterval.
дальше 256 не уйдет, но это не в счет, также как и то что Давид предложил.
Ну в том и фишка :) У Давида повиснет, а у меня больше ни один скрипт работать не будет :) Я же сказал что: "Что я тоже могу скрипты останавливать"
Ну в том и фишка :) У Давида повиснет, а у меня больше ни один скрипт работать не будет :) Я же сказал что: "Что я тоже могу скрипты останавливать"Проше скрипты вобще не писать :)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.