PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Embedded Fonts mit MTASC?


pate33
14.10.2006, 15:18
Hi,

ich hab gerade ne fertige .swf in meine Applikation eingebunden. In dem swf hatte ich eigentlich die Schriftarten direkt eingebettet (Flash 8). Allerdings wird der Text nach mtasc/swfmill doch in einer anderen Schriftart (ich glaube Arial oder so) angezeigt, nicht in der gewuenschten. Habe mich dann daran gemacht, die Schriftarten per XML zu importieren, allerdings komme ich jetzt nicht mehr weiter. Wenn ich nun ein TextFormat mit der Schriftart erstelle seh ich gar nichts mehr.

Jemand ne idee?


mnemonic
14.10.2006, 15:56
Keine Ahnung, ob das Dein Problem ist, aber ich hänge mal eine FLA an in der Beschrieben wird wie man einen Font einbettet. Ich hab die FLA irgendwann mal bei Flashforum.de runtergeladen.
Der Font muss in die Lib und für ActionScript freigegeben sein.

Du kannst allerdings nicht aus x.swf auf die Lib von y.swf zugreifen, das solltest Du bedenken.

pate33
14.10.2006, 16:26
hm, bin nicht mehr auf Arbeit um das auszuprobieren, aber danke schonmal! :)

Im Grunde moechte ich nur ein FLA von meinem Designer laden und dort die Texte dynamisch anpassen bzw. Frames springen.

pate33
16.10.2006, 11:56
hat funktioniert. Danke. :)

Naja, so wie ich wollte nicht, aber es geht :D. Ich generiere nun den Text direkt im AS, und verwende static-text im SWF.

pate33
16.10.2006, 14:55
Wieder ein Problem mit den Schriften ... :(

Hab ne fla/swf mit Static Text in einer bestimmten Schriftart. Leider wird der Text nach mtasc/swfmill nicht mehr angezeigt. :(

Woran liegt das? Will nicht fuer jeden Text nen TextField im AS-Code erstellen. :(

pate33
16.10.2006, 15:30
hab mal die Schriftart zu der Library vom entsprechenden fla/swf gepackt, aber tut sich nix. :( Sehe immernoch keinen Text.

mnemonic
16.10.2006, 15:32
Hier (http://lists.motion-twin.com/pipermail/mtasc/2006-February/029397.html) scheint mal jemand das gleiche Problem gehabt zu haben, leider ohne irgendeine Antwort...

Hier (http://aralbalkan.com/377) hat jemand das Ganze irgendwie anders gelöst.

Anscheinend geht zwischen den einzelnen Produktionsschritten Information verloren. Ich kenne mich leider mit MTASC/SWFMILL nicht aus um das wirklich bestätigen zu können.

pate33
16.10.2006, 15:48
naja, die Loesung mit dem TextField aus dem AS Code heraus kenn ich schon, allerdings bekomme ich halt swf Dateien von meinem Designer mit statischem Text, den ich halt nicht unbedingt im Quelltext nochmal neu erstellen moechte. :(

mnemonic
16.10.2006, 15:54
Hast Du die Möglichkeit mal einen Blick in die Flas zu werfen bzw mal mit dem Designer zusammen ein paar Dinge auszuprobieren?

Zu testen wäre:
- embedd Attribut an/aus
- static/dynamic
- rein prophylaktisch in AS das Textformat mit den entsprechenden Attributen zu setzen (sollte für den Designer kein grosses Ding sein - bisschen Copy und Paste)

Meistens läuft es mit Flash darauf hinaus so lange zu testen, bis man eine Lösung gefunden hat, die funktioniert...

pate33
16.10.2006, 16:04
ich hab das fla hier, um das zu probieren und bin auch schon die ganze zeit dran. :(

Static Text scheint ueberhaupt nicht zu funktionieren. Mit Dynamic Text geht es manchmal, aber nicht immer. :(

pate33
16.10.2006, 16:39
loadMovie ("library/Stage.swf");

das ist alles. :(

http://osflash.org/pipermail/swfmill_osflash.org/2006-September/000953.html

mnemonic
16.10.2006, 16:58
Sehe ich das jetzt richtig, dass Du mit der SWF, die Du vom Designer bekommst, nichts anderes tust als sie in eine andere SWF reinzuladen?
Also kein Konvertiergefuchtel an irgendeiner Stelle?

pate33
16.10.2006, 17:13
jepp, ganz genau. :) Ich schreibe meine Applikation mit dem ganzen Verwaltungskram in ActionScript mit mtasc/swfmill. Darin lade ich die swf vom Designer, bei der ich nur zwischen den Frames hin und her springe. :) Kein Gefuchtel. Keine Konvertierung. :)

mnemonic
16.10.2006, 17:31
Dann sollte es wirklich ausreichen, dass Du einfach nur die SWF vom Designer lädtst. Das wird ja letzten Endes vom Player organisiert.

Nur um es nochmal klarzustellen:
In der SWF ist fertiger Content, d.h. es gibt Bilder, etc, und das Textfeld ist statisch und schon mit Text befüllt auf der Stage. Wenn der Font eingebettet werden soll hat das der Designer auch schon im Autorentool eingestellt. Wenn man die FLA in Flash geöffnet hat und STRG+Return drückt sieht man den Text.

Korrigier mich bitte, wenn meine Ausgangsbasis falsch ist.

Wenn alles was ich oben beschrieben habe stimmt, sollte es kein Problem geben und Du solltest auch nichts weiter an der FLA ändern.
Das Beispiel, das ich oben gepostet hab ("tf_create") darfst (solltest) Du nur anwenden, wenn es um ein Textfeld geht, das zur Laufzeit erzeugt wird, dynamisch mit Text befüllt werden und einen eingebetteten Font verwenden soll.

pate33
16.10.2006, 17:55
Keine Ahnung, ob der Designer mit dem Autorentool arbeitet. Ich kenn das nicht.

Ich habe momentan vom Designer eine FLA (zum reinschauen und ausprobieren) und eine SWF mit ein paar Frames, die statischen Text, Bilder und Movies enthalten. Den dynamischen Content erzeuge ich ueber mein ActionScript mit dem CreateText.

Insofern ist eigentlich alles erledigt. Muss jetzt nur noch fertig werden. :)

mnemonic
16.10.2006, 18:03
Also ist das Problem jetzt gelöst? :confused:

pate33
16.10.2006, 18:10
Ja. :)

Es lag eigentlich nur daran, dass der Static Text nicht angezeigt wurde. Das lag daran, dass man die Library des swf mit loadMovie(); laden musste.

pate33
16.10.2006, 18:35
shit, das mit LoadMovie() war ein Reinfall. :( Das laedt das SWF rein und ich kann nichts darin aendern. :( Nichtmal Frames springen. :(

mnemonic
16.10.2006, 18:45
Patrick,

atme mal tief durch und überleg mal.

Ich schätze mal, dass Du einfach in Deinem Loader
loadMovie("toLoad.swf", blah); gecoded hast.
Das ist natürlich nicht positiv, da Du damit Dein "this" mit allem Code zerschiest, denn der Befehl macht ja nichts anderes als this.loadMovie([...]).


Versuch mal stattdessen:
this.createEmptyMovieClip("container", 1);
this.container.loadMovie("toLoad.swf"); Damit bleibt Dein Code erhalten und Du kannst fröhlich mit
this.container.gotoAndPlay(xy); rumhüpfen. :)

pate33
16.10.2006, 18:51
hmmmm ... die Problematik wurde mir dann auch bewusst, nachdem ich gelesen habe, was loadMovie() genau macht. :(

aber ich versuchs. Danke. ;)

pate33
16.10.2006, 19:09
Wie spreche ich denn eine TextBox 'test' auf Layer 'text', Frame 1 an?

_root._text.test?

mnemonic
16.10.2006, 19:26
Ich nehme mal an, dass es sich um eine Textbox aus der geladenen SWF handelt.

Grundsätzlich solltest Du SWFs mit dem MovieClipLoader laden. Es hat lange gedauert, bis Macromedia/Adobe sich mal erbarmt haben sowas zu implementieren. Vorher war es immer eine "royal PITA" Clips korrekt zu laden und auf sie erst zuzugreifen wenn alles initialisiert war (Du willst gar nicht wissen was man für einen Affentanz machen musste um das zu kontrollieren...).

Generell greift man auf ein Element in einer nachgeladenen SWF über den Instanznamen ("Instance Name"!) zu, den man dem Ding auf der Stage verpasst hat.
Wenn Du Dich an meine obiges Beispiel gehalten hast und das TextField myTextField heisst, würdest Du es über
this.container.myTextField
ansprechen.
Tu das aber um Gottes Willen nicht direkt nach der Zeile mit dem loadMovie-Befehl. Benutz den MovieClipLoader und lass Dich benachrichtigen (CallBack-Funktion "onLoadInit"), wenn der Clip geladen und initialisiert ist.

pate33
16.10.2006, 19:35
Tu das aber um Gottes Willen nicht direkt nach der Zeile mit dem loadMovie-Befehl. Benutz den MovieClipLoader und lass Dich benachrichtigen (CallBack-Funktion "onLoadInit"), wenn der Clip geladen und initialisiert ist.

das erklaert, warum ich die ganze Zeit nicht weiter komme. :(

Naja, jetzt bin ich einen Schritt weiter und mache demnaechst Feierabend.

Dank dir vielmals. :)