Форум 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=135749)

CHLameR 31.01.2010 18:15

Проферка количества фреймов
 
Подскажите, пожалуйста, как сделать проверку на количество фреймов в мувиклипе.
То есть условие, если фреймов в мувиклипе больше двух, то "это", если нет, то "другое".

Zik. 31.01.2010 18:30

Код AS1/AS2:

if (clip._totalframes > 2) {
        //то
} else {
  //другое
}


CHLameR 31.01.2010 19:17

Спасибо ;)
ЕЩе вопрос появился - можно как нибудь заставить анимированный мувиклип не проигрывать анмиацию, иначе чем stop(). МОжет быть можно как то установить скорость анимации = 0?

udaaff 31.01.2010 19:26

А stop() чем не устраивает?

CHLameR 01.02.2010 17:41

Возможно я захотел невозможного. Но все-таки напишу.
В ходе тестов игры была выявлена серьезная пробелма - после последних изменений. Каждый уровень игры постепенно начинал тормозить и до такой степени, что играть становилось невозможно. Причина тормозов выявлена.

Имеется множество блоков с множеством кадров и один вид блоков с 2 кадрами - неразрушаемый. На уровнях блоки рандомно распределяются.
Теперь пишу код столкновений блоков с шариком и результат столкновений.

Кусочек кода о столкновениях:
Код AS1/AS2:

 
//столкновения с объектами из массива.
var i = boxes.length;
        while (i--) {
                var curB = boxes[i];
                if (curB.hitTest(MCball)){
 
                if (Math.abs(MCball._x-4.5+MCball._width-curB._x)<MCball._width){
                        Ball_dx=-Math.abs(Ball_dx);
                }
 
                if (Math.abs(MCball._x-4.5-curB._x-curB._width)<MCball._width){
                        Ball_dx=Math.abs(Ball_dx);
                }
 
                if (Math.abs(MCball._y-4.5+MCball._height-curB._y)<MCball._height){
                        Ball_dy=-Math.abs(Ball_dy);
                }
 
                if (Math.abs(MCball._y-4.5-curB._y-curB._height)<MCball._height){
                        Ball_dy=Math.abs(Ball_dy);
                }
 
        //Смотрим, сколько кадров у объекта. Если больше двух - то это обычный блок,
//за него начисляются очки и он пропадает. Если меньше двух - то это неразраушаемый блок.       
if (curB._totalframes > 2) {
    _global.score+=10;
        curB.removeMovieClip();
        remove = 1;       
        if(remove ==1){
                _global.compteurbriques--;
                remove = 0;}
//Если количество блоков на уровне становится равно количеству неразрушаемых блоков
//то переходим на другой уровень.
                if (_global.compteurbriques==_global.blockm){
                        _global.levelcourant++;
                        _root.gotoAndPlay("chargementLevel");
                        _global.lives+=1;
                        lvlremove += 1;
                        }               
        }

В итоге в игру страшные лаги, если на уровне присутствует блок, у которого 2 кадра. Если его нет - нет и лагов. Почему эти лаги возникают нет никаких предположений, но проблема спрятана именно в этих стркоах кода. Может быть тут какая-то нелепая ошибка?

Тормоза в игре усиляются со временем, даже если ни разу не запускать шарик в блоки.


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

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