Autor Zpráva
bankovcanka
Profil
Ahoj,

nevies mi poradit s tymto problemom:

Vystavba:

scena1 MovieClip1 MovieClip2 (movieClip2 je vnoreny do movieClip1)

V movieClip2 je button, ktoremu chcem priradit funkciu: nech na release prehraje monieClip1 frame2

?

Dakujem

Monika
embee
Profil
jsi ve spatne sekci. Jinak

this.movieClip1.movieClip2.onRelease = function():Void {
this._parent.gotoAndPlay(2);
}

v pripade ze movieClip2 je button. Pokud v nem je button, tak je to

this.movieClip1.movieClip2.button.onRelease = function():Void {
this._parent._parent.gotoAndPlay(2);
}
bankovcanka
Profil
Ahoj,

aj tak mi to nejde, pise error

**Error** Symbol=movieClip2, layer=rozbalovac, frame=25:Line 1: Statement must appear within on handler
this.movieClip1.movieClip2.igor.onRelease = function():Void {

Total ActionScript Errors: 1 Reported Errors: 1

...a ja naozaj neviem kde je chyba.

Mohla by som ti pripadne poslat aj .fla, nepozrelm by si sa na to?

Monika
embee
Profil
bankovcanka - vim presne kde je chyba - kod davas nekam, kam nepatri - pripojujes ho k objektu misto toho, abys ho davala na casovou osu... rychlokurz psani AS:

Veskery skript patri na casove osy, pokud mozno na prvni snimek hlavni casove osy. Tim padem samozrejme musis pouzit urcity typ adresace = rict skiptu, na jakou udalost kde ma reagovat a co se ma stat. Takze priklad:

hlavni casova osa -> movieClip -> button

V old-fashioned stylu, ktery se bohuzel jeste pouziva, skript napises primo na button. Zde samozrejme nepouzivas zadnou adreaci, protoze skrip lezi primo na tlacitku. Tudiz staci pouze definovat typ udalosti, na ktery ma funkce reagovat:

on(Release) {
trace("blabla");
}

nicmene tohle je spatne reseni. Predstav si, ze mas slozitejsi projekty s desitkami, popripade stovkami movie clipu. V takovem projektu se pak nevyznas, nebudes mit sanci zjistit, co spousti co a nakonec se z toho zblaznis. Nehlede k tomu, ze spoustu funkcnosti tenhle typ skriptovani zkratka neumoznuje. Spravnejsi a doporucovany zapis je na hlavni casovou osu na snimek jedna, kde se pise 90% veskereho skriptu projektu (pokud je to mozne, da se psat i 100%). Takze v nasi situaci musis udelat nasledujici veci:

a] napsat funcki, ktera se ma spustit po udalosti onRelease
b] nadefinovat udalost tak, aby se tebou napsana funkce vlastne spustila.

tudiz:

function myFunction():Void {
trace("blabla");
}

this.movieClip.button.onRelease = function():Void {
myFunction();
}

Par poznatku:
samozrejme nemusis psat funcki myFunction zvlast, trace muzes nadefinovat primo. Je to jenom demonstrace toho, jak je mozne kod provazat. Dale - je bezpodminecne a nezbytne nutne dat objektum na scene instance name. Instance name neni jmeno objektu v knihovne, jak by se mohlo zdat. Musis ho proste pripradit k objektu na scene (samozrejme muze byt stejne jako jemno symbolu). Takze si klikni na movieClip na scene a v panelu properties mu dej jmeno "movieClip", to same s buttonem. Bez toho to zkratka nebude fungovat a to z jednoho prosteho duvodu - pokud chces neco nekam poslat, musis jednak znat adresu a to misto tu adresu musi mit. A to je presne to, co je instance name - adresa konkretniho objektu na scene.

Tohle by ti melo stacit k tomu, co potrebujes zvladnout. Zkus se s tim poprat a kdybys stale nevedela, pisni.
bankovcanka
Profil
embee,

stale mi vypisuje tu istu hlasku. MC mam pomenovane, button pomenovany. Funkcia je vlozena do solo vrstvy na timeline.

...

nemohla by som Ti poslat .fla?

bankovcanka
embee
Profil
bankovcanka
jestli mas ten skript tam kde ma byt, tak ti to uhlasku davat nemuze... nezapomnelas ten stary skript smazat? ale ok, posli na mail@embee.cz

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: