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
}
}