Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Igrica Pong

  Ker so igrice zelo zabavne, je zato tudi primerna ta lekcija, kjer boste ustvarili znano klasiko.
 
 
1
 
 
Ustvarite nov Flash (ActionScript 2.0) dokument.
 
 
2
 
 
Kliknite na dokument z desnim miškinim gumbom in izberite Document Properties....

Odpre se novo okno.

Frame rate nastavite na 30 fps.

Lahko nastavljate tudi ozadje in velikost dokumenta.

Kliknite na gumb OK.
 
 
3
 
 
Narisali bomo prvega "igralca".

Izberite orodje Rectangle Tool.
 
 
4
 
 
Določite mu poljubno barvo polnila.

Jaz sem Fill color določil črno barvo.
 
 
 
 
 
5
 
 
Narišite kvadrat na spodnjem delu dokumenta.

Sicer bo skripta poskrbela, da se bo kvadratek postavil čisto na dno, ampak vseeno ga narišite spodaj, ker bo lažje.
 
 
6
 
 
Izberite orodje Selection Tool (bližnjica je tipka V).

Potem pa s tem orodjem kliknite dvakrat na ustvarjeni kvadrat, da ga boste v celoti označili.
 
 
7
 
 
Pritisnite tipko F8, da boste označeno konvertirali v simbol.

V polje Name vpišite paddley.

Type določite Movie clip in kliknite na gumb OK.
 
 
8
 
 
V oknu Properties vpišite v polje Instance name paddley (glej sliko).
 
 
9
 
 
Narisali bomo še drugega "igralca".

V zgornjem delu dokumenta narišite kvadrat v poljubni barvi.

Jaz sem narisal kvadrat v rdeči barvi.
 
 
10
 
 
Z orodjem Selection Tool (bližnjica je tipka v) kliknite dvakrat na ustvarjen kvadrat, da ga boste v celoti označili.

Pritisnite tipko F8, da boste označeno konvertirali v simbol.

V polje Name vpišite paddlez.

Type določite Movie clip in kliknite na gumb OK.
 
 
11
 
 
V oknu Properties vpišite v polje Instance name paddlez (glej sliko).
 
 
12
 
 
Narisali bomo še "žogico".

Izberite orodje Oval Tool (bližnjica je tipka O).
 
 
13
 
 
Narišite poljuben krog v poljubni barvi.

Slika 4 prikazuje postopek spreminjanja barve, če ste pozabili.
 
 
14
 
 
Z orodjem Selection Tool (bližnjica je tipka v) kliknite dvakrat na ustvarjen krog, da ga boste v celoti označili.

Pritisnite tipko F8, da boste označeno konvertirali v simbol.

V polje Name vpišite ball.

Type določite Movie clip in kliknite na gumb OK.
 
 
15
 
 
V oknu Properties vpišite v polje Instance name ball (glej sliko).
 
 
16
 
 
Z orodjem Selection Tool označite krog.

Pritisnite tipko F9, da boste vnesli naslednjo akcijsko kodo:

onClipEvent(load)
{
function reset()
{
this._x=275;
this._y=200;
this.fullspeed=14;
this.xspeed=0;
this.yspeed=9;
this.udist=0;
this.edist=0;
this.ufraction=0;
this.efraction=0;
}
this.reset();
}
onClipEvent(enterFrame)
{
if(this._x>=525&&this.xspeed>0) //if ball hits right wall
{
this.xspeed=-this.xspeed;
}
if(this._x<=25&&this.xspeed<0) //if ball hits left wall
{
this.xspeed=-this.xspeed;
}
if(this.hitTest(_root["paddley"])) //if ball hits player paddle
{
this.udist=_root["paddley"]._x-_root.ball._x;
if(this.udist!=0)
{
this.ufraction=this.udist/(_root["paddley"]._width/2)
this.xspeed=-((1-Math.abs(this.ufraction))*this.fullspeed);
this.yspeed=this.ufraction*this.fullspeed;
}
else if(this.udist==0)
{
this.yspeed=-this.fullspeed;
}
if(this.yspeed>0)
{
this.yspeed=-this.yspeed;
}
}
if(this.hitTest(_root["paddlez"])) //if ball hits AI paddle
{
this.edist=_root["paddlez"]._x-this._x;
if(this.edist!=0)
{
this.efraction=this.edist/(_root["paddlez"]._width/2)
this.xspeed=-((1-Math.abs(this.efraction))*this.fullspeed);
this.yspeed=this.efraction*this.fullspeed;
}
else
{
this.yspeed=this.fullspeed;
}
if(this.yspeed<0)
{
this.yspeed=-this.yspeed;
}
}
this._y+=this.yspeed;
this._x+=this.xspeed;
if(this._y>440||this._y<-40)
{
this.reset();
}
}

Zaprite okno Actions.
 
 
17
 
 
Označite sedaj spodnji kvadrat.

Pritisnite tipko F9 in vnesite naslednjo akcijsko kodo:

onClipEvent(load)
{
this._y=390;
this._x=275;
this.paddlespeed=9;
}
onClipEvent(enterFrame)
{
if(Key.isDown(Key.LEFT)&&this._x>30)
{
this._x-=this.paddlespeed; //move paddle paddlespeed pixels left
}
if(Key.isDown(Key.RIGHT)&&this._x<520)
{
this._x+=this.paddlespeed; //move paddle paddlespeed pixels right
}
}

Zaprite okno Actions.
 
 
18
 
 
Sedaj pa označite še zgornji kvadrat, pritisnite tipko F9 in vpišite naslednjo akcijsko kodo:

onClipEvent(load)
{
this._y=5;
this._x=275;
this.paddlespeed=9
}
onClipEvent(enterFrame) //below is my simple crappy AI for pong
{
if(this._x>_root.ball._x+5)
{
this._x-=this.paddlespeed;
}
if(this._x<_root.ball._x-5)
{
this._x+=this.paddlespeed;
}
}

Zaprite okno Actions.
 
 
19
 
 
Pritisnite tipko CTRL + ENTER in si oglejte svojo zadnjo mojstrovino.

Kliknite tukaj, da si ogledate mojo Flash igrico.
 
 
Komentiraj
 
 
 
 
 
25.12.2007, 18:04
sam delam svojo igrico...vožnja z avtom(noob sem še, zato delam tloris )...iz AS-ja za žogico sem vzel "if (this.hitTest(_root["crate"])){itd." Naredil sem, da ko se avtomobil "dotakne" crate-a, da crate skrije(hide.crate(true) ...ampak mi ne dela...prosim za pomoč
 
 
 
 
25.12.2007, 20:53
še en problem...kako naredim, da se bo objekt, ko bo dosegel določeno koordinato y(1920), postavil na y koordinato -384?...poskusil sem s to kodo:
onClipEvent(enterFrame)
{
this._y+=this.yspeed;

if (this._y=1920)
{
this._y=-384;
}
}
pa ne vem zakaj ne dela ...tnx
 
 
 
 
25.12.2007, 20:54
moj drugi in tretji post ne veljata!
 
 
 
 
25.12.2007, 21:51
Kaj si mislil s tem, da ne veljata?
 
 
 
 
26.12.2007, 12:05
saj je vredu...včeraj sem napisal neki post pa ni bil v redu...ampak ga sedaj več ni...
 
 
 
 
26.12.2007, 12:33
Glede zadnjega vprašanja, mi pade edino na pamet, da imaš pogoj =1920, medtem ko se koordinate spreminjajo v korakih po 9, tako da je možno, da pogoj nikoli ni izpolnjen.
Poizkusi npr. s pogojem >=1920 && <=1940
 
 
 
 
26.12.2007, 14:30
sem poskusil, vendar ne gre=S...
to je moja cela koda za ta objekt(morda je kaj drugega narobe):
onClipEvent(load)
{
this._x=512;
this._y=384;
this.yspeed=20;
}
onClipEvent(enterFrame)
{
if(this._y>1919)
{
this._y=-384;
}
this._y+=this.yspeed;
}
 
 
 
 
26.12.2007, 21:33
sedaj gre vredu, vendar mi, ker imam dva objekta zaporedoma na to kodo, dela razmake med njima...ker praviš, da se koordinate spreminjajo v korakih po 9...ali lahko to kako rešim?
 
 
 
 
27.12.2007, 11:52
Premikanje je vedno v korakih in sicer toliko, kot je vrednost this.yspeed (v originalu je bila 9).
 
 
 
 
28.12.2007, 20:15
hvala!...zdaj sem povečal fps(120(več ne gre=S)) in this.yspeed zmanjšal na 3(prej sem imel na 18(hehe))...sedaj pa gre vredu...sori da težim, ampak naletel sem na novo težavo...hočem narediti, da se bo objekt("crate" skril(izginil), ko se bo dotaknil drugega objekta("avto" ...to je moj action script za avto in prosim, če mi pomagate poiskati napako(instance name-e sem vpisal!):

if (hitTest(_root.crate)) {
hide.crate(true);
}
 
 
 
 
28.12.2007, 20:16
hvala že vnaprej
 
 
 
 
28.12.2007, 21:31
sem že uredil...ta del kode za avto:
if (hitTest(_root.crate)) {
_root.crate._visible = false
}...tnx vseeno
 
 
 
 
29.12.2007, 19:19
spet tukaj z novo težavo=S...del moje kode za avto je:
if (hitTest(_root.crate)) {
_root.crate._visible = false;
_root.score = _root.score+1;
}
zraven sem naredil score dynamic text...moja težava pa je, da mi točke nabira cel čas, ko imata "avto" in "crate" vsaj eno skupno točko...
namesto score+1 mi prišteje okrog 120...zanima me, kako lahko naredim, da bo točke(1) prištelo samo tedaj, ko bosta se dotaknila eden drugega(avto in crate)...tnx
 
 
 
 
6.5.2009, 20:51
Do 17. koraka v cs4 je šlo vse ok pol ko sem hotel vnest kodo za zgornji korak (kopiru sem jo iz lekcije pa je napisal tole: <The actions on the clipboard contain errors. Actions with errors cannot be pasted in script assist mode. Mi zna kdo pomagat???
 
 
 
 
6.5.2009, 20:54
Si preveril, da si označil pravokotnik?
 
 
 
 
6.5.2009, 21:30
Urharec, ali si vse potrebno označil kot Movie Clip?
Aha in naj ti še povem, lekcija je samo za Action Script 2.0. Če si delal v 3.0, ne bo delovalo
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!