Je zkouškový období

Diplomová práce

Uplatnění počítačových animací v elektronickém publikování


3. krok - Střílení hrdiny

Další činnost, kterou hrdina vykonává, je střílení na protivníky. K tomu bylo potřeba vytvořit nový movie-clip střela (bullet), který se po stisku mezerníku zduplikuje v blízkosti hrdiny a pohybuje se větší rychlostí než on. Zásadním problémem bylo zjistit směr, na který je postavička hrdiny právě nasměrována. Byla tedy vytvořena proměnná dir, která obsahuje informaci o směru, tato proměnná reaguje na stisknutí šipek doleva a doprava. Pomocná proměnná a zajišťuje neopakování akce při držení mezerníku.

onClipEvent (load) {
  d = 0; 
//vynulování proměnné d - zajišťuje unikátnost názvu nové instance 
//duplikovaného movie-clipu bullet
  dir = 1; 	// určení počátečního směru hrdiny - vlevo
}
// URČENÍ SMĚRU POHYBU HRDINY NASTAVENÍM PROMĚNNÉ DIR
onClipEvent (enterFrame) { 	
  if (Key.isDown(Key.RIGHT)) {dir=0;	// po stisknutí šipky vpravo
  } else 
  if (Key.isDown(Key.LEFT)) {dir=1;}	// po stisknutí šipky vlevo
}
onClipEvent (enterFrame) {
  if (Key.isDown(Key.SPACE) ) { 	// když je stisknut mezerník
    if (!a) {			        // když a je false
    d++;			        // zvyšuje se proměnná d
    bulletDepth=(d%100);	        // konstanta určuje šířku střely
    _parent.bullets=bulletDepth;	//všechny střely mají stejnou šířku
    _root.bullet.duplicateMovieClip("newBullet"+d, bulletDepth);
    // duplikace střely ("nový název instance", šířka)
// POHYB STŘELBY URČENÝ PROMĚNNOU DIR
  if(dir==0){ // vpravo
    _root["newBullet"+d].speed=10;      // rychlost a kladný směr střely
    _root["newBullet"+d].stepx=20       //vzdálenost od středu hrdiny
  } else
    if(dir==1){ // vlevo
      _root["newBullet"+d].speed=-10    // rychlost a záporný směr střely
      _root["newBullet"+d].stepx=-20    //vzdálenost od středu hrdiny
      _root["newBullet"+d]._rotation = 180; // otočení střely o 180°
    }
    a = true; // nastavení proměnné a na true
    }
  }
  else {a = false;} // nastavení proměnné a na false
}

Samotná střela (bullet) pak obsahuje ActionScript udávající počáteční polohu střely, která je učena pozicí hrdiny (hero), a také omezuje dolet střely tím, že ji na určitých souřadnicích osy x odstraní (removeMovieClip), tím se také uvolňuje z paměti.

onClipEvent (load) {
  if (_name != "bullet") {		// když jméno není bullet
    this._x = _root.hero._x+stepx; 	// počáteční bod střely po ose x
    this._y = _root.hero._y-40;	 	// počáteční bod střely po ose y
  }
}
onClipEvent (enterFrame) {		
  if (_name != "bullet") {		// když jméno není bullet
    _x += speed;	// pohyb po ose x rychlostí danou proměnnou speed
    if(_x>550){removeMovieClip(this)}
    //omezení vzdálenosti střely – vlevo za obraz scény
    else
    if(_x<-10){removeMovieClip(this)}
    //omezení vzdálenosti střely – vpravo za obraz scény
  }
}

Ukázka

Nemáte nainstalovaný Macromedia Flash plugin.

DreamTemplate - Web Templates