Форум 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)
-   -   Как реализовать игровой цикл...??? (http://www.flasher.ru/forum/showthread.php?t=85744)

D12 29.09.2006 22:56

Цитата:

неправда
Докажи =)

Код:

setInterval()
невсчет =) так как для програмной анимации бесполезен , а вот в паре с
Код:

onEnterFrame
просто замечателен выполняя роль обрабоки "условий" : )

etc 29.09.2006 23:31

D12, нужно было сразу дописывать, что ты подразумеваешь под «быстрее».

CCCPirate 29.09.2006 23:33

D12 такое впечатление что вы бредите

iNils уж вам то должнобыло быть понятно что имеется ввиду энтерфрем не рута а каждого отдельного клипа

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

CCCPirate 29.09.2006 23:35

D12 У меня в игре КАЖДАЯ пуля и каждая деталька при падении запускает счетчик при этом загрузка памяти не более 40-60%, что вполне приемлимо

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

вот это были бы тормоза

iNils 29.09.2006 23:37

Цитата:

Сообщение от CCCPirate
iNils уж вам то должнобыло быть понятно что имеется ввиду энтерфрем не рута а каждого отдельного клипа

Какая разница?

CCCPirate 29.09.2006 23:39

Цитата:

Сообщение от iNils
Какая разница?

как какая?

энтерфремы выполняются по очереди, следовательно пока одна пуля пролетит все 10 циклов в него вклученного, другая пресекающая ее траекторию даже не сдвинется

iNils 29.09.2006 23:50

Цитата:

Сообщение от CCCPirate
как какая?

энтерфремы выполняются по очереди, следовательно пока одна пуля пролетит все 10 циклов в него вклученного, другая пресекающая ее траекторию даже не сдвинется

А зачем вы запускаете N-ое количество onEnterFrame? Для таких вещей я давно написал себе класс, в который передаю ссылку на мувик и функции (! не одну, а сколько надо). То есть у меня один onEnterFrame, но обрабатывает он все подписанные на него мувики.

CCCPirate 30.09.2006 00:03

Цитата:

Сообщение от iNils
А зачем вы запускаете N-ое количество onEnterFrame? Для таких вещей я давно написал себе класс, в который передаю ссылку на мувик и функции (! не одну, а сколько надо). То есть у меня один onEnterFrame, но обрабатывает он все подписанные на него мувики.

хм, интересный прием

в таком случае возражениий против энтерфрейма нет, но тогда главное условие - то что он только ОДИН!

мне до сих пор было удобно обходится множественным энтерфремом

ваш подход оценить пока не могу, так как это надо еще попробовать...

D12 30.09.2006 00:07

Цитата:

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

CCCPirate 30.09.2006 00:25

Цитата:

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

Код:

mc1.onEnterFrame = function() {
        for (var i = 0; i<4; i++) {
                mc1._x++;
                trace('1');
                trace('x первого='+mc1._x+' х второго '+mc2._x);
                if (mc1.hitTest(mc2)) {
                }
        }
        delete onEnterFrame;
};
mc2.onEnterFrame = function() {
        for (var i = 0; i<4; i++) {
                mc2._x++;
                trace('2');
                trace('x первого='+mc1._x+' х второго '+mc2._x);
                if (mc1.hitTest(mc2)) {
                        //trace (true);
                }
        }
        delete onEnterFrame;
};

вот, вставьте этот год в пример который был выше и увидите отпут:

2
x первого=157.75 х второго 380.7
2
x первого=157.75 х второго 381.7
2
x первого=157.75 х второго 382.7
2
x первого=157.75 х второго 383.7
1
x первого=158.75 х второго 383.7
1
x первого=159.75 х второго 383.7
1
x первого=160.75 х второго 383.7
1
x первого=161.75 х второго 383.7
2
x первого=161.75 х второго 384.7
2
x первого=161.75 х второго 385.7

что означает, сначала весь энтерфрем первого, а потом второго следовательно первый движется- второй стоит

А не
1
2
1
2
как вы думали,


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

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