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

SWiSH Max - Operacje wsadowe na efektach (?)

figureliusz - Czw 16 Lut, 2012 09:39
Temat postu: Operacje wsadowe na efektach (?)
Witam, problem następujący (plik w załączeniu)

Napis pojawia się z kropli tuszu (movie clip, napis jako maska, wektory kropelek skalują się po kolei ze stałym interwałem klatkowym - każda na takim samym efekcie).

Efekt działa, problemy są następujące:

Powiedzmy, że chcę zmienić zbiorczo efekt każdej kropli tuszu (np. długość trwania czy akcelerację). Mogę zmienić jeden, zapisać pod inną nazwą i załadować do pozostałych - przy kilkunastu kropelkach do zrobienia, przy kilkudziesięciu - straszna robota, zwłaszcza, jak chciałbym wypróbować kilka wersji.
Czy można w jakiś sposób zmodyfikować zapisany efekt, aby zastosował się wszędzie, gdzie jest przypisany?

Problem nr 2.
W jaki sposób chytrze zmienić interwał, z jakim odpalają się efekty na kolejnych kroplach? Ustawione jest co 5 klatek ale powiedzmy, że chcę zmienić na co dwie albo co dziesięć - przesuwanie ręczne jest strasznie upierdliwe.
Podejrzewam, że da się to zrobić skryptowo ale tu niestety nawet jeszcze nie raczkuję.

Pewnie da się napisać skrypt, który powiela obiekt w N miejscach, pozycjach X,Y, z interwałem Z, z efektem E, który można zbiorczo modyfikować?

To chyba na przyszłość - problem pierwszy jest dla mnie istotniejszy. Będę wdzięczny za odpowiedź.
F

espe1 - Czw 16 Lut, 2012 13:33

Powielanie co x sekund (milisekund)

Kod:

onFrame (1) {
howLong = setInterval(5000)
    i = 1
function duplication(){
    duplicateMovieClip(_root.mc,"mc"+i,_root.getNextHighestDepth())
    i++
}
blah = setInterval(duplication, 10); //powielanie co 10 milisekund, wartość można zmieniać
}
onSelfEvent (enterFrame) {
    mc._x+=20 //przesuwanie mc w prawo o 20 px
}
onFrame (300) {  //usuwanie powielania np. po 300 klatkach - zwolnienie pamięci
clearInterval(blah);
}


A twój efekt "inkdrop", to nic innego jak zwykłe skalowanie. Kod wstawiamy pod mc:

Kod:

onSelfEvent (load) {
this._xscale=0
this._yscale=0
s=0
}
onSelfEvent (enterFrame) {
s++
this._xscale=s
this._yscale=s
if (s>300)
s=300
}


A zamiast przesunięcia w poziomie (mc._x+=20), można dać ruch po sinusoidzie:

Kod:

onFrame (1) {
counter = 0;   
maxang = 70; //kąt
cwidth = 20; //wychylenie
acc = 0;     //speed
}
onSelfEvent (enterFrame) {
counter++;
acc = Math.sin((counter*20)*Math.PI/180)+2;
if(acc < 3){
acc = 3;
}
mc._rotation = Math.sin(counter/cwidth)*maxang;   
mc._x += acc*Math.cos(mc._rotation*Math.PI/180);
mc._y -= acc*Math.sin(mc._rotation*Math.PI/180);
}


[ Dodano: Czw 16 Lut, 2012 14:48 ]
Ja się popiszesz, to otrzymasz coś takiego:

figureliusz - Czw 16 Lut, 2012 15:41

Absolutne mistrzostwo świata - nic nie rozumiem.
Nie ma wyjścia, albo zrozumiem podstawy pisania skryptów albo będę się bawił ręcznie.
Dziękuję i pozdrawiam


Powered by phpBB modified by Przemo © 2003 phpBB Group