Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Задержка Action Script 2.0 (http://www.flasher.ru/forum/showthread.php?t=133243)

lext55 30.11.2009 18:15

Задержка Action Script 2.0
 
Привет!

сразу хочу сказать моя тема аналогичная этой. Но совет из нее не помог. Задержка не работает.

Нужен эффект смены картинок. Для него сделал слой с маской
mask_mc - это мувик целой маски из вертикальных линий
line_mc - мувик линии - делал все на тайм лайне без AS

Код AS1/AS2:

//Переменные xl и yl это координаты первой линии
var xl:Number = - 1;
var yl:Number = - 1;
 
// В этом цикле выводится вертикальные линия из квадратиков которые постепенно закрывают изображение слева направо (mask слой)
for (var i = 1; i <= 140; i++) {
 
this.attachMovie("line_mc", "line_mc_"+i, this.getNextHighestDepth(), {_x:xl, _y:yl});
//Здесь задется xl координата для следующей линии
xl = xl + 4;
// Задается координата yl четные ряды -1 нечетные -5 или наооборот - неважно (ну чтобы клеточки на линии были в шахматном порядке)
if ( yl == - 1 ) { yl = - 5 }
else { yl = - 1 };
//Тут надо вставить задержку на 5 кадров.Что бы только через 5 кадров выводилась след линия А то получается что все линии выводятся сразу.
//Пробовал вот это - не работает задержка
stop();
setTimeout(function () {
        mask_mc.gotoAndPlay(mask_mc._currentframe+1);
}, 1000);
 
}

подскажите ответ для AS2 - уже весь сижу. AS3 этот скрипт вообще не воспроизводит Adobe виснет.

dark256 01.12.2009 17:02

Код AS1/AS2:

function GO(val)
{
  trace(val)
}
setTimeout( GO,  5000, "123")

Выводится 123 однократно с задержкой в 5 секунд
Если что-то не работает - упрощайте конструктив вызова и построения функционалов :)

lext55 02.12.2009 15:35

Не работает. Пробовал вот так вообще ничего не выводится
Код AS1/AS2:

var xl:Number = - 1;
var yl:Number = - 1;
 
 
 
for (var i = 1; i <= 140; i++) {
 
 
function GO(val)
{
this.attachMovie("line_mc", "line_mc_"+i, i, {_x:xl, _y:yl});
}
setTimeout( GO,  5, "123");
 
 
xl = xl + 4;
if ( yl == - 1 ) { yl = - 5 }
else { yl = - 1 };
 
}

Пробывал вот так - задержки не создает.
Код AS1/AS2:

var xl:Number = - 1;
var yl:Number = - 1;
 
for (var i = 1; i <= 140; i++) {
 
this.attachMovie("line_mc", "line_mc_"+i, i, {_x:xl, _y:yl});
 
xl = xl + 4;
if ( yl == - 1 ) { yl = - 5 }
else { yl = - 1 };
 
function GO(val)
{
  trace(val);
}
setTimeout( GO,  5000, "123");
}

Вывод функция вообще не выполняется. Что делать?
dark256, видишь в коде AS2 функция setTimeout не подсвечивает даже,
поэтому рискну предположить что она из AS3.

Zik. 02.12.2009 15:41

setTimeout прекрасно работает и на ас2

lext55 02.12.2009 16:51

ну тогда что я делаю неправильно? почему данный код не работает? при этом Check Syntax ошибок не выдает

Zik. 02.12.2009 17:14

а зачем функция объявляется и вызывается в цикле?????

lext55 02.12.2009 17:29

[IMG]http://pic.************/uploads/091202/R0vb8ercEo.jpg[/IMG]
Вот это то что должно получится, вертикальные линии должны появляться одна за одной, слева направо через 5 кадров. Вывод линий организован в цикле for все даже работает, только линии выводятся все и сразу. задержка никак не хочет работать.

Zik. 02.12.2009 17:45

Код AS1/AS2:

var xl:Number = -1;
var yl:Number = -1;
function go(i:Number):Void {
        attachMovie("line_mc","line_mc_"+i,i,{_x:xl, _y:yl});
        xl = xl+4;
        if (yl == -1) {
              yl = -5;
        } else {
              yl = -1;
        }
}
for (var i = 1; i <= 140; i++) {
        setTimeout(go, 100 * i, i); //время сами зададите
}


lext55 02.12.2009 17:54

спасибо, работает. Правда непонял что значит Void здесь
Код AS1/AS2:

function go(i:Number):Void {

и 100 * i ( походу с каждым новым циклом промежуток временной увеличивается хз зачем, но по факту ничего не увеличивается)
Код AS1/AS2:

setTimeout(go, 100 * i, i);

Я в этот понедельник первый раз ActionScript в глаза увидел. и Flash. Учебник 1000 стр некогда читать было.
Спасибо за помощь.

Zik. 02.12.2009 19:13

:Void означает, что функция ничего не возвращает, нужно ведь типизировать функции

100 * i
Делается для того, чтобы линии появлялись поочереди
Если вы напиши 100, то все появятся в одно время


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

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