Uživatelské nástroje

Nástroje pro tento web


vyuka:flashova_hra_-_ping_pong

Flashová hra - ping pong

Využití Actionscriptu:

  • Tweeny
  • Hit test object - objekt se dotýká jiného objektu.

Vytvoříme tyto objekty:

  • Pálka (vytvořte symbol palka_mc)
  • Míček (vytvořte symbol micek_mc)
  • Zeď okolo herního pole (zatím není jako symbol)

Napíšeme si první tweeny pro pohyb:

var /*proměnná*/ tweenX /*jméno proměnné*/ :Tween /*proměnná typu tween*/ = new Tween
(micek_mc /*jméno objektu, který je ovládán*/ , "x"/*vlastnost která se ovládá*/ ,
None.easeNone /*typ pohybu*/,micek_mc.x /*počáteční pozice*/,micek_mc.y+10 /*koncová pozice*/,
3/*délka trvání*/,true/*délka trvání je uvedená ve vteřinách*/;

Při testování swf se teď míček pohybuje jen jednou (po dobu 3 vteřin jak je nastavená délka tweenu).

Opakování pohybu tweenu (ContinueTo)

ContinueTo - metoda, která nechá zachované všechny prvky původního tweenu, změní jen cíl a trvání

addEventListener(Event.ENTER_FRAME,posunMicek);
 
var deltaX:Number = 10;
var deltaY:Number = -10;
 
function posunMicek(e:Event) {
	tweenX.continueTo(micek_mc.x + deltaX, 10);
	tweenY.continueTo(micek_mc.y + deltaX, 10);
	}

Dotýkání objektů - hitTestObject

Je možné určit, kdy se dva objekty (pojmenované objekty) dotknou, také jde pomocí této události ovládat další děje.

objektKterýSePohybuje.hitTestObject(Objekt, ktereho se dotkne)

!Reakční plocha dotýkání objektů není jejich neprůhledná plocha, ale aktivní rámeček, který se objevuje při jeho označení! (rámeček = Bounding box) Míš má tedy reakční plochu jako kdyby byl čtverec!

Pokud chceme aby se míč odrážel od stěn, musíme ze stejného důvodu vytvořit objekty pro každou stěnu: (pokud bychom vytvořili objekt ze všech tří stěn, jeho rámeček by zahrnul i „vnitřní“ pole mezi stěnami, míček by se tak už na svém základním umístění „dotýkal“ stěny.)

Vytvořte si tedy tyto objekty jen vytvořením symbolů z existujících částí zdi:

Rozšíříme funkci posuň míček:

addEventListener(Event.ENTER_FRAME,posunMicek);
 
var deltaX:Number = 10;
var deltaY:Number = -10;
 
function posunMicek(e:Event) {
	if (micek_mc.hitTestObject(horniZed_mc)){
		deltaY = -deltaY;
		}
	if (micek_mc.hitTestObject(levaZed_mc)){
		deltaX = -deltaX;
		}
	if (micek_mc.hitTestObject(pravaZed_mc)){
		deltaX = -deltaX;
		}
 
	tweenX.continueTo(micek_mc.x + deltaX, 10);
	tweenY.continueTo(micek_mc.y + deltaY, 10);
	}

Přidáme do funkce ještě odrážení od pálky, v podstatě funguje jako odraz od horní zdi:

if (micek_mc.hitTestObject(palka_mc)){
		deltaY = -deltaY;
		}
vyuka/flashova_hra_-_ping_pong.txt · Poslední úprava: 2012/02/23 13:16 autor: verca