« 1 2 »
Autor Zpráva
matko
Profil *
ahojte,

potrebujem poradit s si pre vas trivilanou vecou ale pre mna dost zlozita. mam casovu os kde mam nikolko butonov a ked kliknem na jeden prejde na urcity snimok a da mu nejaku premennu napr id. Tie dalsie butony su na tej istej ose a ked kliknem na ne s inym id tak sa neurobi nic. Teda ako mam urobit zapis aby po kliknuti na buton sa vzdy ta premenna zmenila na pozadovanu zapis pri kazdom butone je taky. Jasne s inou hodnotou 1,2,3 a pod.


on(release){

gotoAndStop(3)
var idKraj = 2;
}
dredie
Profil
nejak moc nechapu ceho se snazis dosahnout... problem je v cem, ze ti to neskace tam kam ma? nebo ze se nezapise promenna? Nebo ze se nezmeni hodnota promenne?

jinak z toho co tu vidim tak deklarujes lokalni promennou, tudiz se smaze po skonceni funkce. Staci tu prommenou s klicovym slovem var definovat mimo funkci a ve funkci ji pak pouze prirazujes hodnotu. Takze asi nejak takhle:

var myId:Number;

this.myBtn.onRelease = function () {
myId=2;
}

- ale tezko se radi, kdyz nevim co chces udelat. Jenom ti poradim - pripojovat skript primo k objektum je hodne spatne reseni, vrele ho nedoporucuju

d.
matko
Profil *
Nebo ze se nezmeni hodnota promenne?

Ano, nezmeni sa hodnota. Asi som to zle napisal prepacte.
dredie
Profil
matko - no tak v tom pripade je evidentni problem v definovani promenne. Kdykoli definujes promennou uvnitr funkce (v tvem pripade je to oficialne "zmrsena" funkce pripojena primo k instanci symbolu), tak tato promenna existuje pouze v ramci teto funcke. Hodi se to napr. pro mezivypocty, ale v tvem pripade to nemuze fungovat. Staci kdyz ji nadefinujes mimo (viz vyse)
matko
Profil *
no skusam, skusam, ale vypisuje mi tuto chybu a je sposobena tym ze to nieje prave v tej fce - Statement must appear within on handler
dredie
Profil
matko: okej, dam ti rychlokurz psani AS 2.0

1. veskery kod davej na jedno misto - vyhnes se nekonzistentnosti kodu (proste nebude rozhazeny po celem flashi. Ne vzdy samozrejme je vyhodne vsechno strkat na jedno misto, ale 99% kodu tam dat muzes)

2. veskery kod davej na 1. frame hlavni time line, kdyz uz tak na jiny frame, ale NIKDY na instanci symbolu

3. pouzivej pouze movie Clipy. Buttony jsou "ulehceni" pro zacatecniky, ale casem zjistis, ze ti praci jenom koplikuji.

Samozrejme kod psany na frame vypada jinak nez pripojovany k objektu (viz to co jsem uz psal). Zbytek si uz urcite muzes najit sam (F1 ve flashi :)
matko
Profil *
ja proste potrebujem ze ak kliknem na tie buttony tak nech to prejde na iny 3 snimok a a tam sa zachytia tie premenne a priradia sa inym a vykonava sa dalsi script. No a co sa tyka tych butonov jasne ostavaju na svojom mieste pre dalsie pripadne klikanie a zmenu hodnot premennej
dredie
Profil
matko - jeste poznamka, pokud by te zajimalo proc ti to haze tu chybu - to, jakym zpusobem se pripojuje kod k instancim symbolu je vlastne vyplnovacka. on(Release) je event handler - to, co je vevntir, se provede pri nadefinovane udalosti. Tudiz nemuzes zadny kod dat mimo event handler (v tomto pripade on(Release)), ptze neni definovana zadna udalost, kdy se ma spustit.
matko
Profil *
no mam teraz v tom vsetkom vacsi chaos ako som mal a uz mi tu nic nejde.
dredie
Profil
matko - lol napis mi prosimte srozumitelne co to ma delat to co se snazis vytvorit.
matko
Profil *
len jednoduchu vec, aby ked kliknem na tlacitko napr kosicky zmenilo hodnotu premennej. Premenna sa vola idKraj /nemam urcene nazvy instancie teraz uz MC nie Buttonu/. Po kliknuti sa prejde na 3 snimok ktory po ziskani tej premennej idKraj vygeneruje z xml dalsie data. Ja len neviem predavat premenne a este neviem vytvarat nove tlacitka ktore by sluzili ako navigacia ak sa da bol by som rad keby sme si napisali na ICQ. Moje icq je 291-764-943
dredie
Profil
Jeste otazka - co ti prechazi na snimek 3? A proc? Jinak ICQ ze soukromych duvodu neposkytuju
matko
Profil *
jj jasne ja len ze by som aj screen poslal, ale ok. No to je jedno na aky snimok mozem to dat aj na 55 to je jedno. Fakt je ten ze tam si priradim tu premennu do dalsej sktorou operuje ten script ktory je tam. Aby si uzivatel vybral ten kraj ktory potrebuje potrebujem tu premennu menit. S tym prvym zapisom mi to slo len raz a potom sa premenna nedala meni.
dredie
Profil
matko - no porad to asi uplne nechapu, ale snad to bude takhle:

1. vytvor si buttony jako samostatne MC, kolik jich budes potrebovat

2. dej jim instance name (pouziju myBtn1, myBtn2.... myBtnN)

3. vytvor si MC s tim, co se ma presouvat (nevim sice co to je, ale tipuju to na nejake obrazky) a dej mu instance name (pouziju myMc)

4. na 1. frame timeline dej kod:

var krajID:Number;

myBtn1.onRelease = function():Void {
this.parent.myMc.gotoAndStop(1);
krajID=1;
}


myBtn2.onRelease = function():Void {
this.parent.myMc.gotoAndStop(2);
krajID=2;
}

atp.
matko
Profil *
nie, mne to nejde a skusal som vsetko. Uz na to nemam nervy.Tak zlozity programovaci jazyk som este nevidel ani nie zlozity ale neprehladny.

Nakoniec, vzhladom nato ze som nevedel alebo nebol schopny z tejto fce vybrat tu premennu tak by sa to dalo asi takto ale problem je teraz v tom ze kolko krat kliknem na napr.myBtn1 tak tolko krat sa vysledok zobrazi v dynamickom poli

myBtn1.onRelease = function():Void {
var id = 1;
xml(id);
}
dredie
Profil
matko on zase tak neprehledny neni, akorat zezacatku clovek nevi co a jak. Zkus si jednoduchou funkci:

var myVar:Number;

function generic():Void {
trace(myVar);
myVar=1;
trace(myVar)
}

generic();

melo by ti to vyhodit:

undefined
1
matko
Profil *
no jj, to by slo ale neviem ako zapravovat toto do toho

myBtn1.onRelease = function():Void {
var id = 1;
}
dredie
Profil
matko: ale to je uplne stejne.

Udelej si jeden MC, dej mu instance name myBtn1 a na prvni frame hlavni casove osy napis

var id:Number;

this.myBtn1.onRelease = function():Void {
trace(id)
id = 1;
trace(id)
}

opet ti to vyhodi:

undefined
1

Aboslutne stejnym principem pak udelas vsechny ostatni butony. Btw.: to this oznacuje casovou osu, na ktere se skript nachazi, tudiz hlavni casovou osu. myBtn1 se nahazi na ni, tudiz this.myBtn1.....
matko
Profil *
ano to my vypise v outpute ale ako ju budem mat niekde mam dalej niekam do dalsej premennej strcit. toto co si napisal uz mam a ide to. To mi fuckovalo aj predtym. No a skus ten trace pouzit mimo fce tak aby ta hodnota bola ta co zadas tou funkciou
dredie
Profil
matko - ta hodnota zustane takova dokud ji neprepises jinou hodnotou. Schvalne zkus tohle:

udelej si dva buttony a dej tam skript:

var id:Number=0;

this.myBtn1.onRelease = function():Void {
id+=1;
}

this.myBtn2.onRelease = function():Void {
trace(id);
}

prvni button pricte k hodnote id 1, druhy ti vypise hodnotu id. Az to poklepes tak zjistis, ze hodnota promenne id se nemeni, pokud neklepnes na prvni button a tim nezmenis jeji hosnotu.
matko
Profil *
ano to je jasne ale niekedy potrebujes tu hodnotu premennej aj inde, nielen v tej fce a ja ju potrebujem inde nie v tej premennej. A moj cely problem je ze ja k nej neviem inde pritupovat len v tej funkcii.V inom jazyku by som to riesil returnom ale tu mi to nejako nefuckuje, alebo by som dal ako nejaku globalnu premennu aby som mohol aj mimo fce pristupovat. ja som s toho ***** este ze mam na to cas inak by ma asi z prace za ten vykon vyhodili
dredie
Profil
Porad nechapu jak to myslis - co je podle tebe pristupovani k promenne mimo funkci? V tom prikladu nahore mas dve funkce ktere operuji s jednou promennou, ktera je mimo ne. Nemyslis tak treba nahodou mimo flash?

Jinak globalni promenne ve flashi taky existuji, ale ja jsem ji nikdy nepotreboval. myslim ze se deklaruji pomoci global
matko
Profil *
teraz ja ti dam trochu rychlokurzu napr programovacieho jazyka php

1./ priklad - toto robis ty, ale tz to ani nevypises ale len das do nejakeho debugera, ale vzpis je jednoduchy a to zvladam.

function moja_fce(){
$id = "1";
echo $id;
}

2./ priklad - toto potrebujem ja a to bud takto

function moja_fce(){
$id = "1";
return($id);
}
$vysledok = moja_fce();
echo $vysledok;

// vypise 1

3./ priklad - alebo takto

function moja_fce(){
$_REQUEST['id'] = "1";
}
$vysledok = moja_fce();
echo $_REQUEST['id'];

// vypise 1
matko
Profil *
pri druhom a tretom priklade je premenna deklarovana vo fce pouzita aj vonku, myslim mimo fce a toto potrebujem.Tj. pouzit premennu deklarovanu vo fce nikde mimo fce.Skusal som _root, _global a tiez to nejako nefunguje
dredie
Profil
pokud to dobre chapu, tak tahle funkce:

function moja_fce(){
$id = "1";
return($id);
}
$vysledok = moja_fce();
echo $vysledok;

se da v AS napasta jako:

function moja_fce():Number {
var id = 1;
retur id;
}

var vysledek:Number = moja_fce();
trace(vysledek);

//vypise 1
matko
Profil *
no a teraz toto?

var id:Number=0;

this.myBtn1.onRelease = function():Void {
id=1;
}
matko
Profil *
no ako? da sa to?
XXX
Profil
jsem nevedel, ze ma dredie takovou trpelivost :-D

matko
Nechapu, co nechapes.Pokud si promenou id deklarujes v prvnim snimku hlavni casove osy, tak k ni muzes pristupovat kdekoliv jinde v celem tvem FLA souboru pouhym zadanim jejiho jmena. Pokud mas na prvnim snimku hlavni casove osy skript:

var id:Number=0;

this.myBtn1.onRelease = function():Void {
id=1;
}


tak kdyz se ted presunes na libovolny snimek, tak muzes tady vypsat hodnotu promenne id pouhym

trace(id);

nebo ji tady muzes zmenit na libovolnou hodnotu:

id=10;

atd.
dredie
Profil
XXX - no taky je to fuska :D
XXX
Profil
dredie
To vidim... obdivuju, zes vydrzel tak dlouho ;) Ja uz bych asi davno doporucil knizku a ucit se zaklady :-D
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0