OVLADANIE KLAVESNICOU S DETEKCIOU KOLIZIE         as3


    Tento tutoriál ukazuje základné princípy ovládania movieclipu na scéne klávesnicou spolu s detekciou kolízie dvoch movieclipov. Užitočné hlavne pre hry ale samozrejme použiteľné aj pre iné funkcie a nápady. Tento príklad funguje so šípkami na klávesnici. Tieto tlačidlá na klávesnici možno jednoducho zmenit len prepísaním keyCode v podmienkach. Tieto kódy pre jednotlivé tlačidlá klávesnice sa dajú veľmi jednoducho vyhľadať na internete. Na konci by ste mali dostať niečo podobné ako toto:


     Otvorte actionscript 3.0 flash dokument. Nakreslite 4 čiary ktoré budú reprezentovať steny, prekážky atď. a skonvertujte ich na 4 movieclipy. Do koloniek instance name napíšte right, left, top, bottom. Umiestnite ich na scéne ako uznáte za vhodné. Teraz vložte dynamické textové pole na scénu a nazvite ho output. Teraz nakreslite objekt ktorý chcete ovládať šípkami. Skonvertujte ho na movieclip. Vnútri tohto movieclipu pridajte ďalšie 4 keyframy.Môžete ich upraviť ako chcete. Tie budú reprezentovať pohyb v určitom smere. Pomenujte tento movieclip stickman. Otvorte actions okno a vložte tento actionscript kód:


var hittest:Boolean = false;
stage.addEventListener(KeyboardEvent.KEY_UP, keyUP);
function keyUP(e:KeyboardEvent){
     stickman.gotoAndStop(1);
	 hittest = false;
}


stage.addEventListener(KeyboardEvent.KEY_DOWN, detectKey);
function detectKey(event:KeyboardEvent):void {
	output.text=("The keypress code is: " + event.keyCode)+"\n"+
					("The x location is: " + stickman.x)+"\n"+
					("The y location is: " + stickman.y)+"\n"+
					("Hit test: " + hittest );
	if (event.keyCode==(Keyboard.LEFT)) {
		stickman.x=stickman.x-5;
		stickman.gotoAndStop(2);
	} else if (event.keyCode==(Keyboard.UP)) {
		stickman.y=stickman.y-5;
		stickman.gotoAndStop(4);
	} else if (event.keyCode==(Keyboard.RIGHT)) {
		stickman.x=stickman.x+5;
		stickman.gotoAndStop(3);
	} else if (event.keyCode==(Keyboard.DOWN)) {
		stickman.y=stickman.y+5;
		stickman.gotoAndStop(5);
	} 
}


stickman.addEventListener(Event.ENTER_FRAME, cellHit);

function cellHit(event:Event):void {
	if (stickman.hitTestObject(right)) {
		stickman.x = stickman.x -5;
		hittest = true;
	}else if (stickman.hitTestObject(left)) {
		stickman.x = stickman.x +5;
		hittest = true;
	}else if (stickman.hitTestObject(top)) {
		stickman.y = stickman.y +5;
		hittest = true;
	}else if (stickman.hitTestObject(bottom)) {	
		stickman.y = stickman.y -5;
		hittest = true;
	}
}


     Na prvom riadku je premenná do ktorej sa ukladá či šípka narazila do niektorej so stien. Riadky 2-6 resetujú movieclip šípky a hit premennú ak žiadne tlačidlo klávesnice nieje stlačené. Riadok 9 zisťuje či niektoré tlačidlo klávesnice je stlačené a potom spustí detectKey funkciu. Táto funkcia najprv pošle niake zaujímavé informácie do textového poľa na scéne. Táto funkcia je nepotrebná pre fungovanie zvyšku. If podmienky v tejto funkcii hýbu movieclipom šípky na základe toho ktorá , v tomto prípade, šípka bola stlačená a posunie pohybujúci sa movieclip na zodpovedajúci frame a smer. Riadok 31 zisťuje či nastala kolízia objektov na scéne. cellHit funkcia zisťuje či stickman movieclip narazil do niektorej so 4 stien na scéne. Ak je to pravda, zastaví pohyb šípky v tomto smere a resetuje movieclip tejto šípky a hittest premennú.


STIAHNUT ZDROJOVY SUBOR