SKAKAJUCE DISCO GULE CEZ AS3 as3 |
Tento tutoriál ukazuje ako vytvoriť zaujímavý efekt skákajúcich gulí ,ktoré menia farbu pri každom náraze na hranu scény s blur a blend filtrami. Všetko okrem
okrajov scény je vytvorené actionscriptom. Na konci tohto tutoriálu by ste mali dostať niečo takéto:
Otvorte nový actionscript 3 flash dokument. Nakreslite 4 čiary , dve 550px dlhé a dve 400px dlhé (záleží na rozmeroch vašej scény). Skonvertujte ich na 4 samostatné movieclipy. Do ich koloniek instance name napíšte
left_mc, right_mc, top_mc, bottom_mc a umiestnite ich na scéne zodpovedajúco ich menám. Tie budú slúžiť ako hittest objekty na detekciu okrajov scény. Teraz nastavte farbu pozadia scény na čiernu.
Otvorte actions okno a skopírujte doň nasledujúci actionscript kód:
var i:Number=0; var n:Array=new Array(); var m:Array=new Array(); var multiply:Number=20;//pocet skakajucich gulí var blur:BlurFilter=new BlurFilter(15,15,3);//x blur, y blur, quality(1-low,3-high) var ballProperties:Array = new Array(); function COLORCHANGE(i) { var red:Number=Math.random()*255; var green:Number=Math.random()*255; var blue:Number=Math.random()*255; ballProperties[i].transform.colorTransform= new ColorTransform(1,1,1,1,red,green,blue); } while (i< multiply) { ballProperties[i] = new Shape(); ballProperties[i].graphics.beginFill(0x000000); ballProperties[i].graphics.drawCircle(200, 200, 50); ballProperties[i].graphics.endFill(); ballProperties[i].graphics; COLORCHANGE(i); ballProperties[i].blendMode="add"; ballProperties[i].filters=[blur]; addChild(ballProperties[i]); n[i]=Math.random()*(5); m[i]=Math.random()*(5); i++; } var myDelay:Timer=new Timer(10); myDelay.addEventListener(TimerEvent.TIMER, MOVEMENT); myDelay.start(); function MOVEMENT(e:Event) { i=0; while (i< multiply) { ballProperties[i].x=ballProperties[i].x+n[i]; ballProperties[i].y=ballProperties[i].y+m[i]; i++; } } stage.addEventListener(Event.ENTER_FRAME,HITTEST); function HITTEST(e:Event) { i=0; while (i< multiply) { if (ballProperties[i].hitTestObject(right_mc)) { n[i]=-5; COLORCHANGE(i); } if (ballProperties[i].hitTestObject(left_mc)) { n[i]=5; COLORCHANGE(i); } if (ballProperties[i].hitTestObject(top_mc)) { m[i]=Math.random()*5; COLORCHANGE(i); } if (ballProperties[i].hitTestObject(bottom_mc)) { m[i]=Math.random()*(-5); COLORCHANGE(i); } i++; } }
Riadky 1-6 sú premenné použité v skripte. Riadky 8-14 reprezentujú funkciu ktorá mení farbu gulí pokaždé keď narazia na okraj scény. Red,green,blue premenné
nastavujú náhodnú farbu , môžete kontrolovať množstvo RGB zmenou čísla za math.random príkazom (napríklad red*0 znamená žiadnu červenú vo farbách, a red*255 naopak maximum červenej vo farbách). While slučka
na riadkoch 16-31 vytvára jednotlivé gule s defaultnými parametrami (čierne, veľkosť 50, blend "add"...) a umiestni ich na scénu. Riadky 34-45 sú funkcia ktorá pohybuje jednotlivými guľami na scéne. Táto funkcia sa vykoná
každých 10ms. na riadkoch 48-70 je event listener ktorý zisťuje či niektorá z gulí na scéne narazila do okraja scény a otočí jej pohyb do opačného smeru.
|