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.


STIAHNUT ZDROJOVY SUBOR