[Flash] Font veranderen na klik op button

Pagina: 1
Acties:

  • Duff
  • Registratie: Maart 2001
  • Laatst online: 24-03 16:06
Yo!

het idee is heel simpel: ik wil het lettertype van een tekstveld (een Input Text veld) kunnen laten wijzigen door de gebruiker van m'n swf met een druk op de knop.

Dan heb ik bijv. 3 knoppen (met daarop bijv. 'Arial', 'Comic Sans' en 'Times New Roman'). Wanneer op een van deze knoppen geklikt wordt veranderd het lettertype van het invoerveld.

Een vrij eenvoudig probleem zo lijkt het, maar ik ben er dus al 5 uur lang onafgebroken mee bezig. Heb in de AS dictionary iets gevonden over 'Formatting text dynamically' maar daar snap ik dus geen _drol_ van. Ook met Google en op GoT heb ik verder niet iets kunnen vinden waarmee ik verder ben gekomen. Mijn eerste idee was dat het makkelijk zou kunnen met iets in de trent van 'ALS druk op knop DAN textveldnaam.font = Arial' (even kort en snel gezegd).

Het spijt me als het antwoord te simpel voor woorden is maar ik ben er al zo lang mee bezig, wordt helemaal gek en ben nog redelijk onervaren met Flash.. Bedankt iig voor de moeite van 't lezen (en 't antwoorden :P)..

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 13-05 10:26

XangadiX

trepanatie is zóó kinderachtig

hmm

aan een textfield kun je een texformat object koppelen
http://www.macromedia.com...script_dictionary788.html

dus je maakt een textfield met je text en een nieuw textformat object,
Vervolgens verander je de variablen van het textformat object en rag je ze weer terug richting in je texfield. Et voila: je font veranderd. ( TextFormat .font )

Let wel op dat je goed met je fonts omgaat, als een gebruiker bepaalde fonts niet op zijn systeem heeft dan werkt het natuurlijk niet, en ik weet niet precies hoe je met textformat fonts kunt embedden.

Je kunt natuurlijk ook gewoon 3x een textfield maken met telkens een ander (embed) fontje en die met je knoppen op _visible = true en _visible = false zetten ;)

Stoer; Marduq


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 11-05 10:29
Op de button (tField is naam van je textfield):

Flash ActionScript:
1
2
3
4
5
on( release ) {
    var tFormat:TextFormat = tField.getTextFormat();
    tFormat.font = "Arial";
    tField.setTextFormat(tFormat);
}


Searchwords zijn dus TextFormat en TextField. Je kan overigens ook exotischere fonts gebruiken (daar heeft XX het over) en dat werkt zo:

Flash ActionScript:
1
2
3
4
5
6
on( release ) {
    tField.embedFonts = true;
    var tFormat:TextFormat = tField.getTextFormat();
    tFormat.font = "Exotic Font";
    tField.setTextFormat(tFormat);
}


Je moet dan wel eerst in je library een font plaatsen, dus klik in volgend menu op "New font".

Afbeeldingslocatie: http://www.tweakers.net/ext/f/51327/full.jpg

Vervolgens doe je rechtsklikken op je net toegevoegde font en kies je "Linkage". Dan vink je eerste checkbox aan ("Export for Actionscript") als het goed is gaat "Export in first frame" tegelijk mee aan. Noem je font nu "Exotic Font" en je ziet dat bovenstaand voorbeeld zal werken!

Succes!

[ Voor 4% gewijzigd door McVirusS op 09-02-2005 00:11 ]


  • Duff
  • Registratie: Maart 2001
  • Laatst online: 24-03 16:06
Bedankt!

Toen ik de code van McVirusS direct overnam werkte 't eerst niet, maar na een beetje aanklooien kwam ik erachter dat ik het woord 'TextFormat' eruit moest halen :P

Nu wordt de code die ik onder m'n button heb geplaatst dus zo:

code:
1
2
3
4
5
on( release ) {
    var tFormat = tField.getTextFormat();
    tFormat.font = "Arial";
    tField.setTextFormat(tFormat);
}


Heb ook even methode #2 geprobeerd, met het embedden van een font, en ook daar moet je dus ':TextFormat' eruit halen (althans, zo werkt 't bij mij..). Verder loopt 't nu als een trein, dus X...X en McVirusS: bedankt voor de behulpzame reacties :)

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 11-05 10:29
Kleine aanvulling, dat :TextFormat is Actionscript 2.0. Als je dat niet hebt aantstaan bij je Publish settings (CTRL+SHIFT+F12) dan werkt het inderaad niet. Sorry dat ik daar niet aan gedacht heb :).