Форум 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)
-   -   задержка на 10 кадров внутри метода класса (http://www.flasher.ru/forum/showthread.php?t=85633)

Фломастер 27.09.2006 03:38

задержка на 10 кадров внутри метода класса
 
Мне нужно реализовать задержку на 10 кадров внутри цикла, используемого методом класса, реагирующим на нажатие клавиши. подскажите как.

wvxvw 27.09.2006 06:36

Если класс наследует свойства MovieClip'a, то у него тоже будет метод onEnterFrame...
Примерный код:
Код:

class MyClass extends MovieClip {
        function MyClass(mc:MovieClip) {
                var counter:Number = 0;
                mc.onEnterFrame = function() {
                        if (counter<10) {
                                trace("paused, frame# "+counter);
                        } else {
                                trace("playing "+counter);
                                delete this.onEnterFrame;
                        }
                        counter++;
                };
        }
}
// Инициализация
var _l1:MovieClip = _root.createEmptyMovieClip("target_mc", 0);
with(_l1){
        beginFill(0, 100);
        moveTo(0, 100);
        lineTo(100, 100);
        lineTo(100, 200);
        lineTo(0, 200);
        lineTo(0, 100);
        endFill();
}
var my_pause:MyClass = new MyClass(_l1);

Оно?
_____
Брррр... чет не совсем понятно... кто на что реагировать должен, какие-то нескладушки с падежами вышли =) Перепиши, плс, вопрос поподробнее, если честно, я запутался %)

Фломастер 27.09.2006 13:32

мой класс наследует свойства мувиклипа. внутри метода onRelease, моего класса, я обхожу XML-дерево. обхожу в цикле каждый узел. вот внутри этого цикла мне надо сделать задержку в десять кадров, чтобы обработав один узел я не переходил к следующему сразу.


или, иначе говоря, мне надо растянуть цикл обхода дерева по тайм лайну. может обход засунуть в onEnterFrame? только как....


или если взять Ваш пример, мне нужно вствить задержку после каждого lineTo

Ion 27.09.2006 14:55

А нужно обязательно по таймлайну или можно просто задержку?

Фломастер 27.09.2006 15:35

да, можно просто задержку.
я при обработке одного узла дерева запускаю соответсвующий ему мувик, надо чтобы этот мувик успел проиграться, а только затем цикл перешел на следующий шаг

Nirth 27.09.2006 16:12

FAQ -> Пауза

wvxvw 27.09.2006 16:44

Цитата:

Сообщение от Фломастер
да, можно просто задержку.
я при обработке одного узла дерева запускаю соответсвующий ему мувик, надо чтобы этот мувик успел проиграться, а только затем цикл перешел на следующий шаг

Как раз просто задержку не стоит - на разных компах ролик будет проигрываться с разной скоростью.
Я бы наверное запихал нужную функцию в onEnterFrame, и проверял _currentframe мувика который должен играть в промежутках.
ну или вот еще такой вариант (инициализация такая же)
Код:

class MyClass extends MovieClip {
        function MyClass(mc:MovieClip) {
                var counter:Number = 0;
                var c_node:Number = 0;
                var _xml:XML = new XML("<r_node><c_node t='0'/><c_node t='1'/><c_node t='2'/><c_node t='3'/><c_node t='4'/></r_node>");
                mc.onEnterFrame = function() {
                        if (counter<10) {
                                trace("paused, frame# "+counter+" watched node "+_xml.childNodes[0].childNodes[c_node].attributes.t.toString());
                        } else {
                                trace("playing "+counter);
                                counter = 0;
                                c_node++;
                                if (c_node>=_xml.childNodes[0].childNodes.length) {
                                        delete this.onEnterFrame;
                                }
                        }
                        counter++;
                };
        }
}



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

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