Ôóòóðèñòè÷íî ìåíþ ñ Flash
Íàïðàâèõìå îñíîâèòå, âðåìå å äà ñëîæèì áóòîíèòå çà òîï÷åòàòà. Ñúùàòà ïðîöåäóðà êàòî ïðè òîï÷åòàòà, ñàìî ÷å òóê ùå èçïîëçâàìå ïàðàìåòúðà object init, ò.å. îáåêò, êîéòî ùå å êàòî øàáëîí çà íÿêîëêî îáåêòà, â ñëó÷àÿ MovieClip-îâå. Îáåêòà ùå ñå êàçâà init, è âàæíî çà íåãî å äà áúäå äåôèíèðàí, ïðåäè èçïîëçâàíåòî ìó, ò.å. ùå ñå âúðíåì ìàëêî ïî-íàãîðå â êîäà. Çàäàâàìå íà ïðàâîúãúëíèêà _alpha = 0, ò.å. ùå å íåâèäèì. Âå÷å èç÷èñëèõìå k è ïîäðåæäàìå òîï÷åòàòà, òàêà ÷å çà õîðèçîíòàëà ïðîñòî ùå çàäàäåì íà ïðàâîúãúëíèêà ïîçèöèÿòà íà òîï÷åòàòà. Ïî âåðòèêàë ïðîñòî ùå çàäàäåì ñðåäàòà íà ñöåíàòà.
var back:MovieClip = home.attachMovie("btn_back", "back"+i, i+2, init);
back._alpha = 0;
back._x = btn._x;
back._y = Stage.height/2;
Òóê ïàê ñ ÎÎÏ ùå çàäàäåì åäíî ÷èñëî, òîâà ÷èñëî ùå íè ïîìîãíå äà ïðåíàðåäèì òîï÷åòàòà, ùå èçìåñòèì ìàëêî ïàð÷åòàòà íà òîðòàòà.
back.I = i;
È çàòâàðÿìå öèêúëà:
}
Ñåãà ñå âúðíåòå ìåæäó äåôèíèðàíèòå ïðîìåíëèâè, è öèêúëà. Òóê ùå ñëîæèì øàáëîíà çà ïðàâîúãúëíèöèòå, çà êîéòî âå÷å ãîâîðèõìå, ÷å òðÿáâà äà å äåôèíèðàí ïðåäè äà áúäå èçïîëçâàí. Âñúùíîñò ðàáîòàòà íà òîçè øàáëîí å ïðè ìèíàâàíå ñ ìèøêàòà âúðõó íÿêîé áóòîí-ïðàâîúãúëíèê äà èçâåäå ïîðåäíèÿ ìó íîìåð, êîéòî äåôèíèðàõìå ïîñëåäíî â öèêúëà. Ïðåäè òîâà îáà÷å, ùå äåôèíèðàìå îùå íÿêîëêî ïðîìåíëèâè, êîèòî ùå ñà íè íóæíè.
var anchor:Number = 0;
var newAnchor:Number = 0;
var trailer:Number = num;
Ñëåä òîâà è øàáëîíà. Ïúðâîíà÷àëíî trailer å 10, ùå âèäèòå çàùî ïî-êúñíî, íî êîãàòî ìèøêàòà ïîñî÷è íÿêîé áóòîí ïðîìåíëèâàòà ïðèäîáèâà ïîðåäíèÿ ìó íîìåð.
var init:MovieClip = new MovieClip();
init.onRollOver = over;
function over(){
trailer = this.I;
}
Âðåìå å äà íàïðàâèì è îñíîâíàòà ôóíêöèÿ, êîÿòî ùå äâèæè äîï÷åòàòà. Âñúùíîñò òÿ å ìíîãî ñåìïëà. Àêî âñå îùå íå ñòå íàïðàâèëè ôðåéìîâåòå â ñåêóíäà 30-40 ãî íàïðàâåòå. Ñëåä òîâà, ñëåä öèêúëà for èëè ïðåäè íåãî ùå çàïèøåì ôóíêöèÿòà.
Òúé êàòî íè òðÿáâà ïëàâíî äâèæåíèå íàïðàâèõìå fps ïî-ãîëÿìî, à ñúáèòèåòî onEnterFrame èçïúëíÿâà äåôèíèðàíàòà ôóíêöèÿ ìíîãî ïúòè â ñåêóíäà, èëè ïî-òî÷íî - êîëêîòî ñà ôðåéìîâåòå. Ò.å. ôóíêöèÿòà íè ùå ñå èçïúëíÿâà 30 (íàïðèìåð) ïúòè â ñåêóíäà. Òúé êàòî ôóíêöèÿòà íå å ãîëÿìà, ìàêàð è äà èìà öèêúë â íåÿ íÿìà äà çàòðóäíè ìíîãî ïðîöåñîðèòå.
home.onEnterFrame = function(){
Ïðîìåíëèâàòà íè anchor ("êîòâà"), äåôèíèðàõìå ñúñ ñòîéíîñò 0. Êàêâî ñå ïîëó÷àâà âñúùíîñò - òàçè ìàëêà ôîðìóëêà ñå èçïúëíÿâà 30 ïúòè â ñåêóíäà è ïîñòåïåííî anchor ïðèäîáèâà ñòîéíîñòòà íà trailer, êîéòî ïúê ñå ìàíèïóëèðà îò ïîñî÷âàíåòî íà áóòîíèòå. Àêî èçâåäåòå anchor ñ trace ùå âèäèòå ìíîãî ÷èñëà çàêðúãëåíè äî îêîëî îñìèÿ çíàê, ò.å. ìíîãî ïðåöèçíè. Çàäàâàìå ñòîéíîñòòà íà "êîòâàòà" íà newAnchor, êîÿòî âñúùíîñò å âðåìåííà ïðîìåíëèâà, è ñå îêàçâà íåíóæíà àêî ñòå ðàçáðàëè êîäà, àç ÿ ïîëçâàì, çàùîòî òàêà ìè å ïî-óäîáíî.
anchor = anchor + (trailer - anchor)/3;
newAnchor = anchor;
Çàïî÷âàìå íîâ öèêúë. Ïàê îò 0 äî num, èëè êàêòî âèå ñòå ãî íàïðàâèëè, ñòèãà äà å ñúùèÿ êàòî ãîðíèÿ.
for(var i:Number=0; i
Ïðîìåíëèâàòà btn ùå íàìèðà òîï÷åòàòà, êîèòî ñëîæèõìå íà ñöåíàòà, ò.å. íà home. Âúðíåòå ñå â ïðåäèøíè öèêúë, ñ êîéòî ãî ñëîæèõìå è ùå âè ñòàíå ïî-ÿñíî.
var btn:MovieClip = home["btn"+i];
Òóê ùå ïðîìåíèì úãúëà íà âñåêè áóòîí. Èäåÿòà äà å ñå èçìåñòè èíòåðâàëà (i - newAnchor). Âå÷å âèäÿõòå, ÷å ãðàäóñè èíòåðâàëà ìåæäó âñÿêî òîï÷å å òðèäåñåò è øåñò (36) ãðàäóñà, êàòî ïîñî÷èì, äà ðå÷åì âòîðîòî òîï÷å, trailer ïðèäîáèâà ñòîéíîñò 1 è òîðòàòà íå îò 0 äî 360 ãðàäóñà, à îò -36 (ìèíóñ òðèäåñåò è øåñò) äî 324, à êîãàòî ñå ïîñî÷è ïàê ïúðâîòî òîï÷å èíòåðâàëà ñå âðúùà îò 0 ä0 360 (ò.å. îò î äî Ïè * 2). Õóáàâîòî íà ñèíóñ å, ÷å ñòîéíîñòè èçâúí èíòåðâàëà îò 0 äî 360, çàïî÷âà îò íà÷àëî ò.å. -1 -> 1 -> -1 -> 1... áåç äà ñå íàðóøàâà ïëàâíîñòòà, ò.å. òîï÷åòàòà íÿìà äà ñå òåëåïîðòèðàò îò ãîðå äî äîëó èëè îáðàòíî.  ñëåäíàòà ãðàôèêà ìîæåòå äà âèäèòå, êàê ñå èçìåíÿò ñòîéíîñòèòå íà ñèíóñ:
btn.angle = (i - newAnchor)*((Math.PI*2)/num);
Çàäàâàìå âåðòèêàëíàòà ïîçèöèÿ ñïîðåä íîâèÿ úãúë.
btn._y = Math.sin(btn.angle)*r + Stage.height/2;
}
}
Àâòîð: accorp
Êîìåíòàðè (5)