Форум 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)
-   -   Глюки с Tween перетасовкой карт (http://www.flasher.ru/forum/showthread.php?t=101875)

Odyssus 04.10.2007 16:08

Глюки с Tween перетасовкой карт
 
Вложений: 1
В общем, навалял я исходник - суть в чем - чтобы тасовались карты.
Нажимаешь на верхнюю, она пропадает альфой все сдвигаются вперед на ее место, и появляется тоже альфой на месте последней.
Когда нажимать медленно - все работает гуд. Когда же начинать быстро нажимать - начинаются глюки.. не в том порядке меняются, или одна пропадает вообще.
Как сделать так, чтобы нажатие на карты во время их передвижения (до полной остановки) было невозможным?

Odyssus 04.10.2007 18:02

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

Molecula 04.10.2007 18:19

Знакомая проблемка. Вам нужно блокировать мувики, а потом разблокировать:
Код:

myListener.onLoadInit = function(mci:MovieClip) {
        mci.onPress=function(){
                Lock();                tween = new Tween(mci, "_alpha", None.easeOut, mci._alpha, 0, .8, true);
                tween.onMotionFinished=function(){
                        UnLock();
                        mci.swapDepths(mci.getDepth()-5);
                        for(i=1;i<=4;i++){
                                numer = swtch_forward(mci);
                                number[i] = numer - i;
                                if(number[i]<=0) number[i]=number[i]+4;
                                }
                        for(i=1;i<=4;i++){
                                if(i!=4)mM(swtch_back(number[i]),koord[5-i].X,koord[5-i].Y);
                                if (i==4) {swtch_back(number[4])._x = koord[1].X;swtch_back(number[4])._y=koord[1].Y;
                                        //tween.stop()
                                        tween = new Tween(mci, "_alpha", None.easeOut, mci._alpha, 100, .8, true);}
                                }
                        }
                }
        }

mcLoader.addListener(myListener);

for(i=1;i<=4;i++){
        _root.createEmptyMovieClip("kar_"+i, 1000+i);
        var mci = _root["kar_"+i];
        mci._x = koord[i].X;
        mci._y = koord[i].Y;
mcLoader.loadClip("img/karta_"+i+".jpg", mci);
};

function Lock(){
        for(i=1;i<=4;i++){
        this['kar_'+i].enabled=false
        }
}
function UnLock(){
        for(j=1;j<=4;j++){
        this['kar_'+j].enabled=true
        }
}

Можно делать tween.stop(), но тут не подойдет.


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

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