Autor Zpráva
FlashManiac
Profil
zdravím..
při tvorbě jistých projektů jsem narazil na zajímavou věc, která mi nedá spát a celkově mi kazí dojem z programu.. třeba se někdo už s něčím takovým už setkal..

jde o to, že mám SWF objekt který mí načítá z XML souboru nějaká data.. mezi nimi je i text.. tento text je specifikován v XML tagu takto:
<text><![CDATA[<p align="left"><font color='#FFFFFF' face='Arial' size='17'><b>Vypočítej příklady a klikni na políčka u správně vypočtených příkladů. Až je všechny označíš, klikni na zelené tlačítko.</b></font></p>]]></text>


v SWFku si vytvořím pomocí skriptu nový textField..
this.createTextField('zadani_txt',2,Number(zadani.sourX),Number(zadani.sourY),Number(zadani.sirka),Number(zadani.vyska));
	zadani_txt.multiline=true;
	zadani_txt.wordWrap=true;
	zadani_txt.html=true;


všechno je specifikováno v XML souboru(šířka, výška, souřadnice)
pak tam nahraju ten text:
zadani_txt.htmlText=zadani.text;


když to pak spustím je všechno OK..
vypadá to takto:
Obrázek1
když to ale roztáhnu do maximalizace(vpravo nahoře), tak to udělá tohle:
Obrázek2

myslím, že je jasné kam se posunul ten text.. jen nevím proč.. přijde mi jako by to flashplayer nějak divně interpoloval ten text... více ho roztáhne než samotné SWFko..
setkal se někdo už s něčím podobným? a pokud ano.. lze to vyřešit, popřípadě jak.. díky za odpovědi a názory... :)
embee
Profil
zadani_txt.embedFonts = true ?

mohlo by to pomoct... ale takhle tezko rict. Ja jsem se s falshem a textem uz tolik natrapil, az jsem dosel k zaveru, ze vsechno je mozne...
FlashManiac
Profil
embee:
Bohužel.. tohle by snad fungovalo, kdybych nechtěl formátovat text pomoci HTML tagů.. když jsem to zkusil tam cvičně prdnout..tak se mi text vůbec nezobrazil.. takže to nebude ono..a podminka formátování HTML tam být musí, kvůli snadné editovatelnosti.. Otázka spíš je zda by nebyl přímo v HTML nějaký tag který by tohle nějak zachovával.. ale to asi ne protože v HTML člověk zadá text a ten mu nedělá při maximalizaci žádný problém :) tak nevím.. jako že by mi to trhalo žíly to né.. jen mě to štve XD
embee
Profil
FlashManiac:
no text by mel jit formavat pomoci html i s embedem... i kdyz je to dost tricky. Ja to vetsinou resil tak, ze jsem pouzival font symbol, ktery jsem pak pres text format strkal do textovych poli. Otazka je, coby to udelalo s diakritikou (v as2 jsem reisl jen anglicke weby)

Osobne mi nedavno byl ukazan ultimatni trik, ktery dostava fonty tam, kam ma - ale jedna se o as3 zalezitost a je to celkem krkolomne. Potrebujes k tomu i flex SDK.

- do slozky k falshi si nahrajes fonty (soubory)
- udelas si tridu, ktera pomoci [embed] vlozi fonty do swf (a na tohle prave potrebujes flexSDK, flash [embed] nezna)
- tu tridu instancujes jako prvni vec ve falshi, tim se ti do swfka ty fonty vlozi
- pres text format pak priradis font pomoci jmena, ktere jsi mu dal v tom embedu

Tohle funguje i pro diakritiku. Klasicke font symboly v knihovne mi z neznameho duvodu odmitaji diakritiku zobrazovat (pokud na txt fieldu zapnu embed=true) - dokonce ten bug jde tak daleko, ze v okamziku, kdy mas v knihovne font symbol se jmenem napr. "myFont", ktery pouziva font face Tahoma, tak v swf vsechna staticka textova pole pouzivajici Tahomu nemaji diakritiku - netusim, proc. Flash jsem za jeho neschopnosti s textem vzdy uplne nesnasel.

Nevyhoda toho reseni je ta, ze klasicke fomratovani v html nefuguje - myslim tim napr. <b> (<br> funguje) a musi se to resit workaroundem tak, ze si embedujes font regular a bold variantu a pak pres <font face="..."> prepinas mezi regularem a boldem. Je to neiskovne, ale je to jedina varianta, jak mit html formatovany text s vyhlazovanim a diakritikou dohromady. Aspon jsem jiny zpusob nenasel :)
FlashManiac
Profil
embee:
hmm díky za vyčerpávající odpověď.. někdy to zkusím(až se k As3 dostanu - zatím je tu tolik práce že nemám čas se dotoho ponořit)

akorát te´d mě napadlo, že by to šlo řešit pomocí XML bez HTML tagů.. že by si člověk naformátoval třeba tohle:
<txtPole>
  <text>nějaký text</text>
  <size>15</size>
  <color>0xFF0000</color>
  <align>center</align>
  <bold>true</bold>
  <!-- a tak dále-->
</txtPole>


je to sice poněkud krkolomné ale tam kde není nutno přímo formátovat HTML tagy by to mohlo fungovat.. a pak to ve flashi naformátovat pomocí textFormat.. to pak až bude trošku času zkusím..
embee
Profil
Jj tohle pujde taky... ale jak rikas, je to krkolomne. Mozna by to slo jeste resit pres CSS.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0