🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.programy.flash-5
1 messages
1 total messages Started by d.pamula Fri, 03 Oct 2008 11:44
Usuwanie movieclip'u ze sceny
#34601
Author: d.pamula
Date: Fri, 03 Oct 2008 11:44
77 lines
3879 bytes
Witam, nie wiem czy we właściwym miejscu ten post ale może ktoś mi
pomoże.
W pierwszej klatce kluczowej umieszczam poniższy kodzik akcji:

ilosc_paskow = 30;
 //oznacza ilość pionowych pasków masek
 MovieClip.prototype.drawBox = function(kolor, x, y, w, h) {
 //funkcja rysowania prostokąta w oparciu o kolor, pozycję i wymiary
 this.beginFill(kolor, 100);         //rozpocznij wypełnianie kształtu
kolorem
 this.moveTo(x, y);        //przesuń wskaźnik rysowania do punktu x i
y
 this.lineTo(x+w, y);
 this.lineTo(x+w, y+h);
 this.lineTo(x, y+h);
 this.lineTo(x, y);
 this.endFill();    //zakończ wypełnianie kształtu
 };
_root.createEmptyMovieClip('mask0', 2);
 //stwórz klip filmowy o nazwie mask0
 szerMaski = Math.ceil(flag0._width/ilosc_paskow);
 //oblicz szerokość paska maski
 mask0.drawBox(0, 10, 0, szerMaski+8, Stage.height);
 //narysuj pierwszy pasek maski
 mask0._x = flag0._x;
 //przyciągnij poziomo lewy róg paska maski do flagi
 mask0._y = 0;
 //wyrównaj pasek maski w pionie
 flag0.setMask(mask0);
 //zamaskuj flagę maską w postaci paska
 flagi = [];
 //zdefiniuj tablicę adresów klipów filmowych flag
 flagi[0] = flag0;
 //zapisz adres flagi bazowej
 zWarstwy = 100;
 //określ wysokość bazową nowo tworzonych warstw flag i mask

 for (i=1; i<ilosc_paskow; ++i) {
 //pętla tworząca 20 flag i masek

 var mc1 = flag0.duplicateMovieClip('flag'+i, zWarstwy+i*2,
 {_x:flag0._x, _y:flag0._y});
//przypisz zmiennej mc1 adres nowej, sklonowanej flagi

var mc2 = mask0.duplicateMovieClip('mask'+i, zWarstwy+i*2+1,
 {_x:flag0._x+i*szerMaski, _y:0});
//przypisz zmiennej mc2 adres nowej, sklonowanej maski
mc1.setMask(mc2);
//zamaskuj obecny klip flagi, klipem maski
flagi[i] = mc1;
//zapamiętaj kolejne adresy klipów flag w tablicy
}
flag0.onEnterFrame = function() {
 //funkcja powtarzana 30 klatek/s dla flagi bazowej
for (var i = ilosc_paskow-1; i>0; --i) {
//pętla obracająca wszystkie wcześniej sklonowane flagi jednocześnie
flagi[i]._rotation = flagi[i-1]._rotation;
}
var t = getTimer();
//funkcja zwracająca milisekundy od początku trwania animacji
this._rotation = Math.sin(t*.001+Math.cos(t*.001)*Math.PI*2)*2;
//obracanie bazowej flagi flag0 płynnie w obu kierunkach
 };

Powyższy kodzik "powoduje" animację flagi.
I teraz mam dwa problemy:
Pierwszy polega na tym że nie wiem jak zamknąć/usunąć ten clip ze
sceny po kliknięciu na klawisz, bądź przy przejściu do kolejnej klatki
kluczowej.
Używałem RemoveMovieClip ale nie bardzo mi to działa.
Drugi jak spowodować animację tej flagi w dół, tzn tak by prostokąt
nie był pocięty w pionie tylko w poziomie.

Jestem początkującym flash'owcem więc przepraszam za ewentualne
błędy.

Z góry dziękuje za odpowiedź.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads