SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - skrypt w petli for nie dziala tak jak bym sie spodziewal.

maru - Nie 08 Kwi, 2007 16:42
Temat postu: skrypt w petli for nie dziala tak jak bym sie spodziewal.
witam,
postaram sie rzeczowo pisac:

petla wykonuje sie poprawnie ale efekt nie jest taki jak bym sobie zyczyl. W debagu sprawdzilem i wykonuje sie kod dla wszystkich elementow a dziala tak jakby wykonywal sie tylko dla ostatniego elementu w pentli.

zmienna "a" pobierana z roota okresla ile razy wykonac petle, jest to ilosc spritow ("wall1", "wall2"..."wall a"). Cel jest taki zeby sprawdzic czy zaden ze spritow nie dotyka obiektu w ktorym wykonuje sie petla. niestety dziala tylko wobec ostatniego obiektu czyli obiektu o numerze ze zmiennej "a".

Kod:

onLoad () {
    a = _root.a;
}
onEnterFrame(includingFirstFrame) {
    //trzymanie wyznaczonego boku sensora
    this._x = _parent.playerf._x;
    this._y = _parent.playerf._y - _root.speed;
    //zdezenia
    for (i = 0; i <= a; i++) {
        if (isNearTarget("_parent.wall" add i)) {
            _root.u = "stop";
        } else {
            _root.u = 1;
        }
    }
}


pewnie widac ze to gierka;) "wall" to sciany, "speed" okresla o ile pixeli za jednym nacisnieciem strzalki porusza sie postac, w tym miejscu speed okresla o ile ma byc wysuniety sensor. Postac ma sensory po czterech stronach swiata (powyzszy kod jest kodem gornego sensora) ktore gdy dotkna sciany w "u" wstawiaja "stop", taki stop wlacza animacje udezenia sie w sciane. tylko problem w tym ze ten kod jest lewy i moj ludek wali glowa tylko w jedna ze scian... na wydawalo mi sie ze taki kod zbada czy w poblizu niema ktorejkolwiek ze scian.

tu wstawiam ten kawalek kodu ktory mi nawala:
Kod:
for (i = 0; i <= a; i++) {
        if (isNearTarget("_parent.wall" add i)) {
            _root.u = "stop";
        } else {
            _root.u = 1;
        }


dzieki za help

[ Dodano: Nie 08 Kwi, 2007 19:04 ]
jakas lipa totalna :-\ zrobilem odwrotke czyli sciany wykrywaja postac a nie postac sciany i tu tez lipa. te kopie spritow czyli instance nie wykonuja zadnego kodu;/ zaplacze sie.

smok3n - Pią 15 Sty, 2010 19:45

Witam, ja mam podobny problem, skryptu nie będę przedstawiał, ale opisze to słowami : pętla for .. nie potrafi zmieniać położenia obiektu kilku mc na raz. Nie wiem co jest powodem tego :[ proste obliczenia potrafi zrobić, z duplicate.. też se radzi, ale jak chce zmienić położenie kilku obiektów za jednym zamachem to niestety padaka,

... dane sprawdzona, petla wg mnie powinna chodzic normalnie, a tu lipa :[
probowałem z while to samo, może zrobie na kilku scenach z powrotem, ale wtedy to mi sie to wywroci do gory nogami :[


Cytat:
Pamiętaj, że pętle nie są narzędziem do animowania MovieClipów lub wykonywania czynności które są oparte na czasie , dlatego myśl o pętlach, jakby były one wykonywane "natychmiast". Za pomocą pętli nie zmienisz "płynnie" koloru klipu, jego położenia, przezroczystości czy rozmiaru gdyż pętle nie do tego służą. Do manipulacji właściwościami MovieClipów służy setInterval oraz detektor obsługi zdarzeń MovieClip.onEnterFrame() co było szeroko i niejednokrotnie omawiane na forum :)


Powered by phpBB modified by Przemo © 2003 phpBB Group