Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-10-2003, 17:13   #1 (permalink)
Neuer User
 
Benutzerbild von schnabelmax
 
Registriert seit: Oct 2003
Ort: im garten frankreichs
Beiträge: 76
textWidth problem?

Es soll ein Schreibmaschieneneffect sein dem eine Zeichnung ("blitz"), folgt.
Die Animation und AS liegen complet in einem Mc.
frame 1: hier passiert garnichts ausser dem Empfang der Vars die dynamisch geladen werden.
ActionScript:
  1. this.onData = function() {
  2.     txtTitel = ober;
  3.     txtZeile1 = zeile1;
  4.     txtZeile2 = zeile2;
  5.     txtZeile3 = zeile3;
  6.     txtZeile4 = zeile4;
  7.     //_parent.blitz.nextFrame();
  8.     nextFrame();
  9. }
  10.  
  11. ///   textfeld creieren und formObject erzeugen   \\\
  12. MovieClip.prototype.genText = function(pName, pInhalt, pSize, pFarbe, xPos, yPos, pTiefe) {
  13.    
  14.     this.createTextField(pName, pTiefe, xPos, yPos, 0, 0);
  15.    
  16.     form = new TextFormat();
  17.     form.font = "_sans";
  18.     form.size = pSize;
  19.     form.color = pFarbe;   
  20.    
  21.     with (this[pName]) {
  22.         autoSize = true;
  23.         text = pInhalt;
  24.         type = "dynamic";
  25.         selectable = true;
  26.        
  27.         setTextFormat(form);
  28.         embedFonts = true;
  29.     }
  30.     //textDimension = this[pName].textWidth;
  31.     //trace (textDimension);
  32. }

frame 2: der Schreibmaschieneneffect beginnt, die erste Zeile wird gelesen "blitz" verschiebt bei jedem neuen Zeichen seine x_position".
ActionScript:
  1. stop();
  2. inhalt = txtZeile1;
  3. zeichen = 1;
  4. this.onEnterFrame = function () {
  5. if ( zeichen <= inhalt.length) {
  6.             z = inhalt.substr(0, zeichen);
  7.             this.genText ("dummy1", z, 5, "0xFFFFFF", 1, 14, 998)
  8.             textDimension = dummy2.textWidth;
  9.             _parent.blitz._x = (39 + textDimension);
  10.             zeichen++;
  11.         } else {
  12.                 nextFrame();
  13.                 delete onEnterFrame;
  14. }
  15. };

frame 3: die zweite Zeile wird gelesen, "blitz"..., usw.
gleiches script wie in frame 2


Das Problem:
Dieses AS funzt offline über den player einwandfrei und blitz folgt treu den Zeichen.
Ich verwende hier die "dummy" textFeld variante weil es auf dem Mac ein getTextExtent() bug gibt und dieser Befehl hartnäckig ignoriert wird.
Also erzeuge ich ein dummy textFeld fülle es mit Inhalt und frage dann die Breite ab. Das ich hier so kompliziert vorgehen muss hat mich schon so geärgert, aber damit nicht genug.
Denn nun das ganze über den browser: es wird kein Text angezeigt, "blitz" bleibt stehen. Dennoch benötigt er unterschiedlich lange um von frame zu frame zu springen, er hat also schon den TextInhalt, zeigt ihn aber nicht an.

Erkennt jemand den (die) Fehler?
Oder hab ich es mit einem weiteren bug zu tun

textDimension = dummy2.textWidth; stand eigentlich am ende vom prototype genText(). Und zwar so:
ActionScript:
  1. textDimension = this[pName].textWidth;
ich habe es jetzt nach dem aufruf der methode genText() in jedes neue frame getan um sicher zu gehen, aber das hat nichts gebracht. Überhaupt hab ich ziemlich viel versucht, weiss jetzt nicht weiter und brauche Hilfe.

Ich glaube das Problem liegt bereitz bei der Erzeugung des textFeldes.
Aber warum?
schnabelmax ist offline   Mit Zitat antworten
Alt 24-10-2003, 21:06   #2 (permalink)
HAY
Neuer User
 
Benutzerbild von HAY
 
Registriert seit: Aug 2002
Ort: Faust-Stadt
Beiträge: 2.577
hi
warum du bei jedem zeichen ein neues textfeld machst habe ich zwar nicht begriffen.hier mal ein ansatz.
ActionScript:
  1. inhalt = "dhdhfjsd dfb dfnm,dsf dfnn,mds f dfn,mn   fds,m,n f  dfnds,,mn";
  2. form = new TextFormat();
  3.         form.font = "schrift";
  4.         form.size = 15;
  5.         form.color = "0xFF0000";
  6. genText=function(pName,  xPos,yPos){
  7.     this.createTextField(pName, 1, xPos, yPos, 0, 0);
  8.                 this[pName].autoSize = true;
  9.                 this[pName].text = "";
  10.                 this[pName].type = "dynamic";
  11.                 this[pName].selectable = true;
  12.                 this[pName].embedFonts = true;
  13.                 this[pName].setTextFormat(form);
  14. }
  15. genText ("dummy1"30, 30);
  16. zeichen = 1;
  17. this.onEnterFrame = function () {
  18.         if ( zeichen <= inhalt.length) {
  19.                 z = inhalt.substr(0, zeichen);
  20.                 dummy1.text=z
  21.                 dummy1.setTextFormat(form);
  22.                 textDimension = dummy1.textWidth;
  23.                 blitz._x = (30 + textDimension);
  24.                 zeichen++;
  25.         } else {
  26.                 delete this.onEnterFrame;
  27.         }
  28. };
__________________
gruß Harry
HAY ist offline   Mit Zitat antworten
Alt 25-10-2003, 14:08   #3 (permalink)
Neuer User
 
Benutzerbild von schnabelmax
 
Registriert seit: Oct 2003
Ort: im garten frankreichs
Beiträge: 76
das mit dem ständigen ezeugen eines des Textfeldes ist natürlich richtig und ziemlich doof von mir.
Auch deine Variante funktioniert sehr gut, aber daran lag es nicht.

Ich muss mich wohl entschuldigen, denn den Teil wo der Fehler auftaucht habe ich garnicht erwähnt. Das ganze ding wird nämlich in einen anderen Mc geladen und der Fehler taucht hier auf
ActionScript:
  1. this[pName].embedFonts = true;
da der ladende Mc diese Schrifft garnicht hat und er
ActionScript:
  1. form.font = "_sans"
nicht als systemschrifft sondern als eingebettete schrifft identifiziert.

Aber,
ActionScript:
  1. this[pName].embedFonts = false;
functioniert bei mir nicht weil der Mc mit dem Schreibmaschieneneffect in einem McParent liegt, derer gibt es 5 und diese werden unterschidlich scaliert.
Offenbar verlangt die scalierung von _parent(McParent) in Mc_Schreibmaschieneneffect unbedingt ein embedFonts = true.

Schreibe ich bei mir nun embedFonts = false, folgt "blitz" zwar in allen Mcs dem neuen duktus, aber nur zwei der fünf McParents zeigen in ihrem Mc_Schreibmaschieneneffect den Text an. Dafür zeigen sie ihn aber schön gestochen scharf an, so hätte ich das gern für alle.
Aber wiegesagt die scalierung (zumindest denke ich das es an der scalierung liet) von McParent erlaubt offenbar nur embedFonts = true.

Warum weiss ich leider garnicht und es wäre schön wenn sich jemand fände der das erläutern könnte.

Mein problem habe ich jedenfalls gelöst, merçi
schnabelmax ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele