Flash Tlačítko

Programovacie jazyky, rady, poradňa...
Mikos
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 14
Registrovaný: 31 aug 2008, 16:09

Flash Tlačítko

Príspevok od používateľa Mikos »

Dobrý... :)
Som začiatočník v AS3 a neviem kde by som dostal najlepšiu odpoveď ohľadom flashu.
Potrebujem spraviť tlačítko tak, že keď ho stlačím tak keď ma posuvne na druhu stranku [gotoAndStop(...)] tak aby bolo vidno, že to tlačítko je stlačené.

Dík za odpoveď. :smt006
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash Tlačítko

Príspevok od používateľa weroro »

Tak isto ako v AS2
Vytvor si tlačítko (movieclip), v ňom si vytvor 3 kľúčové snímky (frames), do každého snímku nakresli napr. obdĺžnik (najlepšie inej farby aby si videl rozdiel), zamkni vrstvu a vytvor si novú, ktorú tiež rozdeľ na tri kľúčové.
Do prvého snímku napíš:

Kód: Vybrať všetko

this.stop();
this.onRollOver = function():void  {
	this.gotoAndStop(2);
};
Do druhého napíš:

Kód: Vybrať všetko

this.onPress = function():void  {
	if (!stlacene) {
		this.gotoAndStop(3);
	}
};
this.onRollOut = function():void  {
	if (!stlacene) {
		this.gotoAndStop(1);
	}
};
Do tretieho napíš:

Kód: Vybrať všetko

this.onRelease = function():void  {
	//iná akcia ktorá sa má vykonať po stlačení
	this.gotoAndStop(2);
	stlacene = true;
};
this.onReleaseOutside = function():void  {
	this.gotoAndStop(1);
};
Ak si sa pozastavil nad tým, prečo nepoužívam listenery, tak to preto, lebo ich nechcem používať pokiaľ to nie je nutné.
Mikos
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 14
Registrovaný: 31 aug 2008, 16:09

Re: Flash Tlačítko

Príspevok od používateľa Mikos »

Uf dik moc :)

Ale ešte budem musieť tomu pochopiť, lebo to nechcem vedieť len mechanicky, ale vedieť. S AS mám problém, lebo doteraz som programoval len v GML a nechcem zostať pri ňom, ale posúvnuť sa ďalej.

Ja som mal tlačítka doteraz takto že som spravil BT a potom ten som dal ako MC a už som len programoval. :D

//autoeditácia príspevku (17 Nov 2010, 15:03)
Nefunguje to pravdepodobne nepozná neznámu stlacene tak som ju skúsil zadefinovať v prvom snímku, ale aj tak nepomohlo.
Nevieš čo stím ? :?
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash Tlačítko

Príspevok od používateľa weroro »

BT nepoužívaj.. to robia amatéri :D a zle sa sním manipuluje pri scritovaní (hlavne ak chceš animované tlačítko) Objekt BT sa nedá vytvoriť scriptovou formou, ale MC sa vytvoriť dá, preto ti odporúčam používať radšej MC.
Vysvetlenie môjho scriptu:
Prvý frame:
This. Znamená že príkazy budú reagovať iba v tomto umiestnení, keďže script umiestňujeme priamo do toho MC (do neho).
Stop(); zastaví prehrávanie toho MC (keby to tam nebolo, tak ti to tlačítko bliká ako šialené)
onRollOver je Mouse event, ktorý testuje, či je myška nad tlačítkom
function():void je priradenie funkcie :void znamená že funkcia nevracia žiadnu hodnotu (je to nutné tam dávať lebo AS3 je na toto háklivý)
gotoAndStop(); to poznáš
Druhý frame:
onPress testuje stlačenie myšky (dá sa použiť aj onMouseDown ale na to potrebuješ listener)
onRollOut testuje či sa myška nevzdialila od MC (ak z neho myška odíde, tak sa vykoná funkcia)
if (!stlacene) je podmienka. Ak sa anonymná premenná stlacene nerovná true (! Výkričník je negácia - nerovnosť), tak sa vykoná akcia gotoAndStop();
Tretí frame:
onRelease testuje pustenenie tlačítka myši.
onReleaseOutside testuje pustenie tlačítka myši mimo plochy toho tlačítka (prídeš nad tlačítko stlačíš ho držíš, odídeš preč s tlačítka a pustíš)
stlacene = true zmení anonymnú premennú stlacene na hodnotu true, to znamená, že podmienka if(!stlacene) už nebude platiť, pretože stlacene sa rovná true a tak sa nevykoná akcia gotoAndStop(); a tlačítko ostane stále stlačené a nebude reagovať .

//autoeditácia príspevku (17 Nov 2010, 15:21)
skús tú premenú preddefinovať na prvomm snímku (neviem prečo ti to nejde)

Kód: Vybrať všetko

public var stlacene:Boolean = false;
a toto

Kód: Vybrať všetko

stlacene = true;
zmeň na toto:

Kód: Vybrať všetko

public function zmena():void{
stlacene = true;
}
//AS3 je pekný bordel :D
Mikos
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 14
Registrovaný: 31 aug 2008, 16:09

Re: Flash Tlačítko

Príspevok od používateľa Mikos »

Ach aj tak to nefunguje a skúšal som to dať aj na Stage a aj do prvej snímky toho tlačítka čo je v MC toto:

Kód: Vybrať všetko

public var stlacene:Boolean = false;
Potom som dal do prvej snímky MC iba

Kód: Vybrať všetko

var stlacene:Boolean = false;
a už to nerobí blbosti, ale nefunguje to

Vypisovalo to error typu že: Atribút Public môže byť použitý jedine vnútri kontajneru.

1114: The public attribute can only be used inside a package.

Môže to byť tým, že som to tlačítko spravil s MC
Na prvej snímke tlačítka mam MC kocky na druhej animovanú kocku a na treťom to čo je na prvom a to cele som dal do MC čiže na Stage mám len jeden snímok

Dúfam, že si pochopil :D
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash Tlačítko

Príspevok od používateľa weroro »

Tak ak to máš v norené. tak na hlavnú scénu do prvého snímku daj tú premennú:

Kód: Vybrať všetko

public var stlacene:Boolean = false;
public znamená že je verejná a dá sa ovládať z celého dokumentu.
potom si vytvor tu funkciu čo som ti napísal a zavolaj ju pri stlačení tlačítka takto:
tretí snímok:

Kód: Vybrať všetko

public function zmena():void{
stlacene = true;
}
this.onRelease = function():void  {
   //iná akcia ktorá sa má vykonať po stlačení
   this.gotoAndStop(2);
   zmena();
};
this.onReleaseOutside = function():void  {
   this.gotoAndStop(1);
};
AS3 mi osobne stále robí problémy, lebo sním veľa nerobím a nešmakuje mi. Všetko čo potrebujem, teda úplne všetko čo som kedy robil, som hravo zvládol pomocou AS2 a dokonca aj 3D veci.
Mikos
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 14
Registrovaný: 31 aug 2008, 16:09

Re: Flash Tlačítko

Príspevok od používateľa Mikos »

No dneska som to znova skúsil, ale aj tak to nejde. Vôbec neviem prečo. Skúšal som aj prepnúť na AS2, ale tam to je ešte horšie. :(
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Flash Tlačítko

Príspevok od používateľa weroro »

V AS 2 ti bude fungovať iba to čo som napísal ako úplne prvé.. akurát musíš prepísať :void na :Void (musí tam byť veľké písmeno), kebyže mám flash CS3 a novší, tak by som ti to urobil, ale ja mám iba Flash 8 (mám ho kúpený a nemôžem si dovoliť držať takýto soft nelegálne, preto nemám novší). A vo Flexe sa to v AS3 robí mierne inak.

//autoeditácia príspevku (18 Nov 2010, 13:07)
Tak ma napadlo, že ak máš Flash CS3, tak to vieš uložiť do staršieho Flash 8 formátu a ten budem vedieť upraviť. (samozrejme iba AS2)
Mikos
Amateur
Amateur
Používateľov profilový obrázok
Príspevky: 14
Registrovaný: 31 aug 2008, 16:09

Re: Flash Tlačítko

Príspevok od používateľa Mikos »

Tak som to nakoniec spravil AS2 :) . No ale nechápem prečo spravili až taký veľký rozdiel medzi AS3 :sly:
Napísať odpoveď