| 1 |
Flash keskustelu / Flash ongelmat / Depth-levelin muuttaminen as2 |
Päiväys: 09/02/10 14:53:13 |
| Aloittanut lauriar | Viimeisin lauriar |
Tervehdys, mulla on applikaatio, jossa kuvaruudulle latautuu ikkunoita randomisti arvotuilla x- ja y-arvoilla. Ikkunoiden sisältö koostuu grafiikasta, buttoneista ja dynaamisista teksti-kentistä yms. Nyt kuitenkin pitäisi saada se ikkuna päällimmäiseksi, jota klikataan, osui kursori mihin kohtaan ikkunaa tahansa. Olen lähestynyt ongelmaa hiiren napin painallusta tarkkailevalla listenerillä ja testannut hitTest-komennolla onko kursori ikkunan päällä. Tämän jälkeen olen DepthManageria käyttäen lyönyt ikkunalle arvoksi kTop, jonka pitäisi tuoda ikkuna päällimmäiseksi. Ensimmäinen ongelma ilmenee siinä, että tämä ei toimi tarkoitetulla tavalla. Jos kursori on kahden ikkunan päällä ja kolmannen alla, tuo klikkaus alimman ikkunan päällimmäiseksi, mikäli sen alkuperäinen depth-arvo on ollut korkeampi kuin sen, joka oli tarkoitus tuoda päällimmäiseksi. Toinen ongelma on se, että kTop-arvo järjestelee ikkunoiden depth-levelit jokaisen klikkauksen jälkeen uudestaan. Eli vaikka tuo päällimmäiseksi tuonti onnistukin silloin kun klikattu ikkuna tulee päällimmäiseksi, alemmat ikkunat vaihtavat depth-leveleitä myös alkuperäisen depth-arvon mukaan vaikka niitä ei olla edes klikatu.
Alla käyttämäni koodi: ============================ var mouseListener:Object = new Object(); mouseListener.onMouseDown = function (){ for(i=0; i<ikkunoidenMäärä; i++){ if(ikkuna[i].hitTest(_xmouse,_ymouse,this)){ ikkuna[i].setDepthTo(DepthManager.kTop) } } } Mouse.addListener(mouseListener);
============================
Millä muulla tavalla tätä pulmaa voisi lähestyä, jotta ongelma mahdollisesti katoaisi?
Kiitokset,
-Lauri |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 2 |
Flash keskustelu / Flash ongelmat / Re: Buttonin muuttuminen klikkauksen jälkeen? |
Päiväys: 09/02/10 10:19:10 |
| Aloittanut T-tee | Viimeisin lauriar |
Näissä ekoissa vaihtoehdoissa main-timelinellä ei pitäisi olla animaatioita vaan animaatioiden tulee olla omien MovieClippien sisällä.
Olen tehnyt napit siten, että olen luonut stagelle MovieClipin ja antanut sille instance-nimen esim. "mcBtn" (voi tehdä toki MovieClipin sijasta suoraan myös Buttonin). Olen tehnyt sen jälkeen tuon MovieClipin sisälle dynaamisen tekstikentän ja antanut sille instace-nimen vaikapa "txtBtn". Siten olen kirjoittanut frameen seuraavan kodin:
mcBtn.onPress = function(){ this.txtBtn._alpha = 50; }
Toinen karvalakki-vaihtoehto on tehdä tosiaan MovieClippi (mcBtn) ja tehdä sen sisällä ekaan frameen versio napista ennen painamista ja kirjoittaa ekaan frameen komennoksi Stop(); Tämän jälkeen tekee seuraavaan frameen version napista, jossa nappia on painettu. Seuraavaksi tulee ulos MovieClipistä (mcBtn) ja laittaa framen seuraavan koodin:
mcBtn.onPress = function(){ this.gotoAndStop(2) }
Kolmas tapa on tehdä kaksi MovieClippiä (tai buttonia) instance-nimillä esim. mcBtn1 ja mcBtn2, joista eka on ennen painamista ja toinen painamisen jälkeen. Tämän jälkeen kirjoittaa framen seuraavan koodin:
mcBtn2._visible = false;
mcBtn1.onPress = function(){ this._visible = false; mcBtn2._visible = true; }
=======================================
Mikäli animaatiot ovat main-timelinellä tulee se onko nappia painettu tallentaa muistiin ja ladata muistista tuo tieto aina kun se oikea frame koittaa, minkä mukaan tehdään oikea toiminto (kuten se _alpha-arvo, ollaanko ekassa vai tokassa framessa tai kuten tässä, pitääkö napin mcBtn2 olla näkyvissä). Ratkaisin tämän seuraavalla tavalla:
mcBtn2._visible = false; stop();
mcBtn1.onPress = function() { // tallennetaan muistiin boolean-arvo onko nappia painettu mySharedObject.data.painettu = true; mySharedObject.flush(); //soitetaan animaatio play(); }
mySharedObject = SharedObject.getLocal("savedObject");
loadButton = function() { //tarkistetaan onko nappia painettu if(mySharedObject.data.painettu == true){ //jos on painettu, vaihdetaan toinen nappi näkyviin mcBtn1._visible = false; mcBtn2._visible = true; } } // haetaan arvot muistista loadButton();
|
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 4 |
Flash keskustelu / Flash ongelmat / Re: Usean swf-tiedoston lataaminen as2 |
Päiväys: 08/31/10 15:46:25 |
| Aloittanut lauriar | Viimeisin lauriar |
Kiitos avustanne. Heh, kun ongelman sai kirjoitettua auki ja hetken aikaa oli sen kanssa vattallaan, pulpahti päähän ainakin yksi tapa, jolla ongelma näyttää katoavan. Eli sen sijaan, että kirjoitan vain yhden funktion, jonka sisällä sekä lataan että yritän lähettää kullekin containerille arvoja, kirjoitankin kaksi funktiota, joista ensimmäisessä pelkästään lataan ja toisessa vasta lähetän applikaatiokohtaisia arvoja containereille.
Toisin sanoen koodista tuli siten seuraavanlainen:
===================================== loadContent = function(){ var indexOfAddress = 2; for(i=0; i<numberOfApplications; i++){ var mcApp = this.attachMovie("mcApp", "mcApp"+i, this.getNextHighestDepth())
//tällä kertaa täytynee saada stagelle ladatut containerit muistiin ja siksi lyön ne varmuuden välttämiseksi arrayhin containers.push(mcApp);
var mcL = new MovieClipLoader(); mcL.onLoadInit = function(targetMC){
//Eli päin vastoin kuin ensimmäisellä kerralla, kutsunkin nyt funktiota, jolla muutan haluamiani arvoja drawContent(); } mcL.loadClip(applications[indexOfAddress], mcApp.mcContent); indexOfAddress += numberOfSubjects; } }
drawContent = function(){ var indexOfTitle = 1; for(i=0; i<numberOfApplications; i++){
//vasta tässä vaiheessa siis muutan containereiden arvoja containers[i].drawContainer(containers[i].mcContent._width, containers[i].mcContent._height, applications[indexOfTitle])
indexOfTitle += numberOfSubjects; } }
=====================================

Kritiikkiä ja muita vaihtoehtoja otetaan toki mieluusti vastaan. |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 5 |
Flash keskustelu / Flash ongelmat / Re: "sisällön" näkymisen alkamisajan määritys -ong |
Päiväys: 08/28/10 21:31:49 |
| Aloittanut darthzini | Viimeisin Johku |
En ole aivan varma ymmärsinkö selityksiäsi, mutta yritin kuitenkin.
Eli kannattaa tehdä napista movieClip ja koodata siitä nappi. Samalla siihen voi kätevästi lisätä jonkinlaisen timerin.
esim. näin:
onClipEvent (load) { timer=0; } onClipEvent (enterFrame) { if(go==true){ timer++; } if(timer>20){ with(_root.myMc){ play(); } go=false; timer = 0; } this.onRelease = function() { go=true; } }
Tämän voisi tehdä varmasti kätevämminkin esim. jollakin setInterval-functiolla, mutta tuo on ainakin yksinkertainen. |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 7 |
Flash keskustelu / Flash ongelmat / Re: FLVPlayback komponentin muistintyhjennys |
Päiväys: 07/29/10 11:43:39 |
| Aloittanut OlliH | Viimeisin OlliH |
Joo!
Toi on ihan mielenkiintoinen ja tyylikäs nettivideoplayer. Sitä on ihan kätsä hyödyntää selaimessa. Oikein toimiva siinä.
Lähinnä etsin Compiled clip -komponenttia, jonka voisi Flash ohjelmassa vetää stagelle 'Components' -ikkunasta. Onkohan näihin olemassa edes muita vaihtareita kuin tuo Adoben oma FLVPlayback?
Väsään siis Flashilla tollasta kioskimultsaria. Siis itsenäistä projektoriohjelmaa, jota on tarkoitus pyörittää MacMini tietokoneessa. Oliskohan siinä hyötyä väsätä tollanen oma AIR -ohjelma projektorin sijaan? |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 10 |
Flash keskustelu / Flash ongelmat / Re: MC:n asettaminen päälimmäiseksi as3 |
Päiväys: 07/05/10 00:13:14 |
| Aloittanut White | Viimeisin randomdude |
| voi hyvät hyssykät eli koko logiikka on nyt ihan katollaan. nuo referenssien lähettämiset toiseen luokkaan kannattaa nyt unohtaa kokonaan ja keskittyä event dispatchingiin tai sitten teet singletonit. toivottavasti sait jo apuja tuohon.ja (parent.parent.parent) jutut voisi myös heittää romukoppaan. |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 11 |
Flash keskustelu / Flash ongelmat / Re: Kielitiedostojen uudelleenlataus (AS3) |
Päiväys: 06/11/10 10:44:37 |
| Aloittanut OC5 | Viimeisin BoWa |
http://www.chrisinch.com/blog/articles/show/Flash-addXMLPath-example/
Tosin vanha as2 ohje mutta muuten pitäisi olla validia kamaa tota delegeatea lukuunottamatta.
Käsittääkseni jos esittelet kielitiedostot tolla addXMLPathissa, niin aina kun kutsut tota Locale.loadLanguageXML("mikatahansa"); niin se ajaa sen funktion joka on määritelty callbacissa.
Tosin tuo noponieesin malli on aika hyvä ja siltää mallitiedostot, löytyy sivun alta: http://www.blog.noponies.com/wp-content/plugins/download-monitor/download.php?id=8
-B- |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 13 |
Flash keskustelu / Flash ongelmat / Re: get url- linkki kuvasta, miten? |
Päiväys: 05/07/10 15:23:51 |
| Aloittanut pihlaja | Viimeisin timo |
AS2
Code:
myImage.onRelease = function() { getURL("http://www.domain.com/", "_blank"); } |
|
AS3
Code:
myImage.buttonMode = true; myImage.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:Event):void { navigateToURL(new URLRequest("http://www.domain.com/", "_self")) } |
|
|
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 14 |
Flash keskustelu / Flash ongelmat / ongelma julkaisun kanssa |
Päiväys: 04/27/10 10:19:10 |
| Aloittanut Mate | Viimeisin Mate |
Hei!
Onko jollakulla kokemusta peli julkaisemisesta esim. www.flashgamelicense.com sivustolla? Itselläni on sellainen ongelma, että peli toimii kyllä loistavasti omalla koneella ennen sivustolle lisäämistä, mutta sen jälkeen ilmaantuu kummallisia bugeja.
Pelissäni on mm. salasanakenttä johon voi syöttää tason koodin jolloin pääsee suoraa jatkamaan siitä mihin edellisellä kerralla jäi. Kaikki toimii siis omalla koneellani. Myös äänet temppuilevat Levelkoodin toteutus seuraavanlainen:
Code:
var myPassword1:String = 'xxx'; submit.onRelease = function() { if (code == myPassword1) { gotoAndStop(6); } |
|
|
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 15 |
Flash keskustelu / Muita kysymyksiä / Re: linkin lisääminen flashiin |
Päiväys: 04/16/10 21:50:53 |
| Aloittanut minnis | Viimeisin timo |
Huhtikuu 14th, 2010, 9:10am, minnis kirjoitti:minulla olisi tarve tehdä ihan peruskuvaan linkki flashissä. Jostain syystä en vain tajua, miten sen teen, joten voisiko joku ystävällisesti kertoa.
Mulla on jo .flw tiedosto, enää käsittääkseni puuttuu siitä componentti sekä actionscript. |
|
Ja kumalla versiolla tehdään (AS2 vai AS3)? Tässä AS3 esimerkki:
Code:
kuva.buttonMode = true; kuva.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:Event):void { navigateToURL(new URLRequest("http://www.apukeittio.fi", "_self")) } |
|
|
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 17 |
Flash keskustelu / Flash ongelmat / Re: Kuvasta button ja ulkoinen lataus? |
Päiväys: 04/04/10 18:29:21 |
| Aloittanut Ninnu | Viimeisin timo |
Quote:| Kysymys kuuluu, miten saan sen tässä kolmosessa määritettyä? |
|
painikkeenInstanssi.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void { // tähän koodia }
Quote:| Toinen kysymys, miten saan ulkoisen kuvan ladattua sivustolle? |
|
var loader:Loader = new Loader(); var request:URLRequest = new URLRequest("polku/jonnekin/kuva.jpg"); loader.load(request); addChild(loader); |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 21 |
Flash keskustelu / Flash ongelmat / Re: Looppaus ongelma vertical scrollissa (AS 2.0) |
Päiväys: 03/13/10 11:39:48 |
| Aloittanut sopel | Viimeisin Johku |
Hei! Itse ainakin lähtisin muuttamaan koko koodin niin, että kaikki kuvat luotaisiin erikseen attachMoviella. Esimerkiksi koodi voisi olla tällainen:
var kuvat = _root.createEmptyMovieClip("kuvat", 1); i = 1; speed = 2; final_x = 0; kuva_X = 275; kuva_Y = 200; kuvien_lukumaara=4;
b1.onRelease = function(){ final_x += 550; i++; }
b2.onRelease = function(){ final_x -= 550; i--; }
_root.onEnterFrame = function(){ kuvat._x += (final_x-kuvat._x)/speed;
if (i>kuvien_lukumaara) { i=1; } else if (i<1) { i=kuvien_lukumaara; } }
function uusi_kuva(X, Y) { var kuva = _root.kuvat.attachMovie("kuva_"+i, "kuva_"+i, n++, {_x:X, _y:Y}); kuva.onEnterFrame = function(){ if (this._x+kuvat._x>=500+kuva_X) { uusi_kuva(-final_x+kuva_X,200); removeMovieClip(this); } else if (this._x+kuvat._x<-500+kuva_X) { uusi_kuva(-final_x+kuva_X,200); removeMovieClip(this); } } }
uusi_kuva(kuva_X,kuva_Y);
Täytyy vain tehdä jokaisesta kuvasta erikseen movieclip, jonka nimi on kuva_x, ja exportata se samalla nimellä. (x on siis joku numero) |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
| 25 |
Flash keskustelu / Flash keskustelu / Re: ActionScript 3.0 timelinelle vai luokkiin |
Päiväys: 02/22/10 10:51:42 |
| Aloittanut TommiS | Viimeisin timo |
Lähtökohtaisesti koodi aina luokkiin niin projektin hallinta ja debugaus on paljon helpompaa. Tämä "sääntö" korostuu isoissa projekteissa. Bannerit ja pienet projektit voi vedellä helposti vapaammalla tyylillä .
Debugaus muodostuu painajaiseksi viimeistään silloin kun jokin assetti sisältää 10+ sisäkkäistä movieclippiä ja jokainen niistä sisältää koodia yhdessä tai useammassa framessa. Ja tässä siis tarkoitan koodilla muutakin kuin stop() ja play().
Yleisestiottaen siis kannattaa lähteä siitä, että movieclipit saavat sisältää vain timelinen hallintaan liittyvää koodia sekä eventtien dispatcheja. |
|
Vastaa | Vastaa lainauksella | Ilmoita vastauksista
|
Palaa
boardi-indeksiin.
|