![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: May 2001
Адрес: Санкт-Петербург
Сообщений: 69
|
В топике о панораме 16-09 от ManOwaR господином Артемом Мельниковым был дан адрес с примером. Так вот, с тех пор он мне покоя и не дает. Господа продвинутые флешеры, разжуйте пожалуйста скрипт (работу функции) из этого файла. Суть проиходящего - движение мувиков, организованное по кругу (псевдопанорама) ускоряется в зависимости от движения мыши. Вот файл и тот самый его код:
movieclip.prototype.move = function(xmitte, ymitte, radiusx, radiusy) { if (_y>ymitte) { distance = _y-ymitte; } else { distance = ymitte-_y; } // if (_root._ymouse<ymitte) { ypos = ymitte-_root._ymouse; } else { ypos = _root._ymouse-ymitte; } // speed = ypos/20; if (ypos>100) { speed = 5; } // if (_root._ymouse<ymitte) { if (winkel<(360-speed)) { winkel += speed; } else { winkel = 0; } } else { if (winkel>(-360+speed)) { winkel -= speed; } else { winkel = 0; } } // if (winkel>0 && winkel<=180) { _xscale = 100-(distance/10*4); _yscale = 100-(distance/10*4); _alpha = 100-(distance/10*3); } else if (winkel>180 && winkel<=360 || winkel<0 && winkel>= -180) { _xscale = 60-((100-distance)/10*3); _yscale = 60-((100-distance)/10*3); _alpha = 50-((100-distance)/10*5) } else if (winkel>-360 && winkel<=-90) { _xscale = 100-(distance/10*4); _yscale = 100-(distance/10*4); _alpha = 100-(distance/10*3); } // _x = xmitte+Math.sin(winkel*Math.PI/180)*radiusx; _y = ymitte-Math.cos(winkel*Math.PI/180)*radiusy; } |
|
|||||
|
Регистрация: May 2001
Адрес: Санкт-Петербург
Сообщений: 69
|
Никто не знает ... Жаль
Мучения продолжаются |
|
|||||
|
Регистрация: May 2001
Адрес: Санкт-Петербург
Сообщений: 69
|
Пропавший файл
|
|
|||||
|
Banned
Регистрация: Sep 2001
Сообщений: 6,162
|
Ja poprobuju tebe perewesti rasjasnenija s nemezkogo na russkij, tam w ishodnike wrode objasnjaetsja tschto k tschemu. No nemnogo posje
Sorry net wremeni sejtschasArtem |
|
|||||
|
Banned
Регистрация: Sep 2001
Сообщений: 6,162
|
Привет,
Объяснений там не оказалось, но чем могу помогу. Mitte= центр(нем) Winkel= угол(нем) Radius= радиус Speed= скорость Distance= дистанция Может так разберёшся что к чему. Артём |
|
|||||
|
Регистрация: Oct 2001
Адрес: De, Ratingen
Сообщений: 63
|
Poprobuem rayobrat|sja (proshu proshtshenija ya latinicu...
)movieclip.prototype.move = function(xmitte, ymitte, radiusx, radiusy) { // Perevod: Otnyne vse ob''ekty tipa MovieClip budut obladat’ // takzhe i metodom "move()", prinimajushtshim parametry: // xmitte, ymitte, radiusx, radiusy; // intuitivno predpolozhim, chto xmitte i ymitte– x/y-koordinaty // nekoego centra, otnositel’no kotorogo budet idti vrashtshenie, // radiusx, radiusy - parametry vrashtshenija, sm. nizhe. // Sut’ metoda "move" takova if (_y>ymitte) { // esli y-koord. ob’’ekta bol’she y-koord. centra vrashtshenija, // to sozdaem peremennuju distance, distance = _y-ymitte; // ravnuju raznice mezhdu y-koord. ob’’ekta i y-koord. etogo cenrta. } else { // v protivnom sluchae (esli y-koordinata ob’’ekta men’she // ili ravna y-koordinate centra) distance vyschityvaetsja naoborot // i vse ravno ostaetsja >=0. Distance, takim obr., // eto rasstojanie mezhdu vertikal’nym polozheniem // ob’’ekta tipa MovieClip // i predpolagaemogo centra ego vrashtshenija distance = ymitte-_y; } if (_root._ymouse<ymitte) { // esli vertikal’noe polozhenie myshi men’she // vertikal’nogo polozhenija // centra (to est’ mysh’ nachoditsja vyshe), ypos = ymitte-_root._ymouse; // sozdaem peremennuju ypos, ravnuju raznice // mezhdu y-koord. myshi i centra vrashtshenija; } else { ypos = _root._ymouse-ymitte; // etot parametr toze >=0 } speed = ypos/20; // peremennaja speed – tipa, skorost’ // Ravna 1/20 poluchennoj vyshe // peremennoj ypos, t.e.: chem bol’she raznica // mezhdu vertikal’nym // polozheniem myshi i polozheniem centra vrashtshenija klipa, // tem bol’she speed. if (ypos>100) { // No pri etom speed ne mozhet prevyshat’ 5, // dazhe esli ypos > 100, // t.e., po "osnovnomu" pravilu, speed dolzhen by stat’ bol’she 5. // Takim obrasom, nachinaja s kakoj-to kriticheskoj raznicy // po vertikali speed povyshat’sja bol’she ne budet. speed = 5; } if (_root._ymouse<ymitte) { if (winkel<(360-speed)) { // esli mysh’ vyshe centra vrashtshenija i peremennaja winkel // men’she (360 – speed) (a pri pervoj proverke // winkel = 0 - sm. nizhe), winkel += speed; // to narastit’ znachenie peremennoj na vychislennuju // velichinu speed. // Winkel, kak bylo skazano, znachit "ugol". } else { // a esli peremennaja winkel < 360 // (t.e.: pribaviv speed + winkel mozhno poluchit’ velichinu, // bol’shuju ili ravnuju 360), winkel = 0; // to obnulit’ winkel } } else { // nu a esli mysh’ ne vyshe centra vrashtshenija klipa, to if (winkel>(-360+speed)) { // (ta zhe istorija, chto vyshe, no idet ne pribavlenie, // a vychitanie, t.e. tipa povorot v druguju storonu). winkel -= speed; } else { winkel = 0; } } // Aga, vot pojavljajutsja nakonec standartnye parametry: // _xscale, _yscale, _alpha i vstupaet v igru chisto // "geometricheskaja" logika. // Esli winkel nakhoditsja mezhdu ]0, 180], if (winkel>0 && winkel<=180) { // to: umen’shit’ linejnye razmery klipa proporcional’no distance // (t.e. raznice mezhdu vertikal’nym polozheniem klipa // i centra vrashtshenija) _xscale = 100-(distance/10*4); _yscale = 100-(distance/10*4); // i proporcional’no zhe umenit' alphu _alpha = 100-(distance/10*3); } else if (winkel>180 && winkel<=360 || winkel<0 && winkel>= -180) { // esli winkel lezhit mezhdu ]180, 360] ili [-180, 0[, // to razmery i alpha klipa menjajutsja po drugomu pravilu: _xscale = 60-((100-distance)/10*3); _yscale = 60-((100-distance)/10*3); _alpha = 50-((100-distance)/10*5) } else if (winkel>-360 && winkel<=-90) { // nakonec, esli winkel lezit mezhdu ]-360, -90], // to - opjat’ kak v pervom sluchae // (ne ponimaju, pochemu nado bylo raspisyvat’ eto otdel’no) _xscale = 100-(distance/10*4); _yscale = 100-(distance/10*4); _alpha = 100-(distance/10*3); } // Fokus-pokus! V moem detstve eto nazyvalos’ trigonometriej. // I s tekh por, uvy, moi znanija v etoj oblasti // na etom i zakanchivajutsja ...$( // Po krajnej mere, nakonec-to pojavljajutsja preslovutye // radiusx i radiusy. // Polozhenie objekta po vertikali i po gorizontali privjazyvaetsja // k etim parametram i k polozheniju uslovnogo centra povorota. _x = xmitte+Math.sin(winkel*Math.PI/180)*radiusx; _y = ymitte-Math.cos(winkel*Math.PI/180)*radiusy; } V tret’em kadre osnovnogo fil’ma sgruppirovano 18 klipov: eto kopii objekta "textfield" ("tekstovoe pole") iz biblioteki. (Po suti, eto prosto dinamicheskij tekst "text" v ramke.) Dlja kazhdogo iz etikh klipov propisany actions: onClipEvent (load) { this.text = "lunatic" // ili drugoe imja winkel = 0; // statrtovyj ugol } onClipEvent (enterFrame) { move(364, 199, 0, 100); // kazhdyj raz pri pojavlenii klipa s tekstom vyzyvaetsja metod // move(364, 199, 0, 100). // Etot metod, sobstvenno, kazhdyj raz ocenivaet polozhenie // klipa na stranice i polozhenie myshi i sootvetstvenno menjaet // koordinaty, razmery i jarkost’ klipa. Razumeetsja, dlja // kazhdogo klipa zdes’ metod move() vyzyvaetsjas // odnim i tem zhe naborom parametrov - chto natalkivaet // na ochevidnuju ideju o vozmozhnoj optimizacii. // Mozhno bylo by attachit’. Eto odnoznachno! } NADO BY: 1. Poeksperimentirovat' s parametrami metoda move(); 2. Poprobovat' peredelat' ego dlja vrashtshenija po _gorizontali_ ... da spat' khochetsja, vstavat' zavtra rano Uspekhov!
__________________
Да и пчелы, если вдуматься... |
|
|||||
|
Регистрация: Oct 2001
Адрес: De, Ratingen
Сообщений: 63
|
Vazhnoe dobavlenie:
Kazhdomu "tekctovomu" muviku v tret'em kadre prisvoeno svoe startovoe znachenie winkel (0, 20, 40...): imenno blagodarja etomu oni i stanovjatsja srazu kazhdyj na svoe mesto!!! Eto ja uhe prospal ![]()
__________________
Да и пчелы, если вдуматься... |
|
|||||
|
Регистрация: May 2001
Адрес: Санкт-Петербург
Сообщений: 69
|
Огромный сеньк Особенно K_L (Ну очень постарался)
И не лень же было Вот сижу перевариваю и, видимо, еще долго буду ![]() |
|
|||||
|
Регистрация: Oct 2001
Адрес: De, Ratingen
Сообщений: 63
|
![]()
__________________
Да и пчелы, если вдуматься... |
|
|||||
|
Регистрация: Oct 2001
Адрес: De, Ratingen
Сообщений: 63
|
Metod dejstvitel'no och. tolkovyj.
Dlja nachala, izmenim ego nemnogo (iskljuchitel'no dlja prostoty): pervuju stroku zamenim na: movieclip.prototype.move = function() { xmitte=120; ymitte=120; radiusx=0; radiusy=100; (Teper' metod vyzyvaetsja bez parametrov, kotorye zhestko opredeljajutsja v nem samom.) Sootvetstvenno na muvikakh v tret'em kadre tozhe nado pomenjat' vyzov move()-metoda: vykinut' parametry iz skobok. Teper', po krajnej mere, eksperimentirovat' s izmeneniem parametrov mozhmo centralizovanno. Napr., posmotri, chto poluchaetsja, kogda radiusy!=0; kogda radiusx>radiusy. I chto, kogda eti znachenija umen'shajutsja/uvelichivajutsja - i t.d. Tolkovo. Kstati, esli ostavit' metod movie() s parametrami, to ikh mozhmo budet potom menjat'! ![]()
__________________
Да и пчелы, если вдуматься... |
![]() |
Часовой пояс GMT +4, время: 01:12. |
|
|
« Предыдущая тема | Следующая тема » |
|
|