Eli siis tässä testailin Flash 8 "ohjelmointia". Noh hyvin sitä siinä kirjottelin, mutta yhdessä kohtaa meni hermot ja en jaksanut jatkaa. Nyt ajattelin tulla kysymään, että mikähän on vikana. Eli mulla on tollanen tekstin kirjotus laatikko jonka var arvona on nimi. Sekä toinen laatikko johon ei voi kirjottaa var arvona vastaus. Ja painike jonka actionscriptinä on tällätavalla.
if (nimi == "pentti") { vastaus = "Hassu nimi teillä"; }else { vastaus = "Kiva nimi"; }
Minkätakia tuo if ei koskaan toteudu?
Aina menee elseen... Olen yrittänyt vääntää ja väkertää tuota if lausetta, mutta se ei suostu toimimaan. Kaikissa flash oppaissa sanotaan, että se pitäisi olla tuollatavalla.
Vaikuttaako isot ja pienet kirjaimet? Jos vaikuttaa, niin muuta jollain tapaa tuo nimi-muuttuja pienille kirjaimille enne tutkimista.
Itselläni on flashistä kokemusta vain yhden harjoitustyön verran, mutta eikö noihin tekstilaatikoihin laiteta tekstejä tyyliin
vastaus.text = "Kiva nimi";
Lisäksi tuli huomattua, että dynaamiset tekstit eivät vain yksinkertaisesti näy, jos niiden yhteydessä käyttää maskia tai fade-efektejä. Osittain tuon kyllä pystyi korjaamaan käyttäen embedded-fontteja.
Kyllä se ainakin mulla toimii. Onhan sulla on(release) buttonissa?
Voin laittaa esimerkin (Flash MX) jos et saa pelittämään
Oletetaan että vastaus on tässä tekstikentän <instance name>, ja embedded-fontit on asetettu.
napin actioneihin:
on(release) { // tai on(press), joissain laitteissa ei tuo release toimi, jostain kumman syystä var nimiTarkistus = nimi.toLowerCase(); if (nimiTarkistus == "pentti") { vastausTxt = "Hassu nimi teillä"; }else { vastausTxt = "Kiva nimi"; } // asetetaan tekstikenttään teksti vastaus.text = vastausTxt; }
Siis mulla on tuo on(release) { } tuolla mutta siis silti tuo if ei koskaan toteudu
Varmista nyt ensimmäiseksi, että tuota funktiota varmasti kutsutaan nappia painettaessa. Toiseksi tarkista mitä tietoa tarkastettava muuttuja sisältää. Tämä onnistuu helposti ajamalla flash-ohjelmasi editorin mukana tulevalla debuggerilla (control -> Debug Movie). Debuggeri-ikkunassa valitse valintalistasta oikea actionscripti-koodi ja aseta siihen mielenkiintoiseen kohtiin breakpointteja. Nyt paina nappia ja katso pysähtyikö ohjelman suoritus breakpointtiin vai eikö. Jos pysähtyi, pystyt helposti näkemänään onko vertailtava nimi oikeasti pentti vai onko vika jossain muualla.
tai toinen tapa, jota itse käytän mieluummin:
on(release) { trace("nappia painettu"); // tai on(press), joissain laitteissa ei tuo release toimi, jostain kumman syystä var nimiTarkistus = nimi.toLowerCase(); trace ("nimiTarkistus: "+nimiTarkistus); if (nimiTarkistus == "pentti") { vastausTxt = "Hassu nimi teillä"; }else { vastausTxt = "Kiva nimi"; } trace("vastausTxt: "+vastausTxt); // asetetaan tekstikenttään teksti vastaus.text = vastausTxt; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.