Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-03-2010, 04:01   #1 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Unhappy /// TextField in Sprite -> Sprite.width IST FALSCH !!!

[ GELÖST, ICH HABE NICHT BEACHTET DAS DIE TEXTFELDER VERSCHIEDEN BREIT SIND UND HAB SIE WIE EIN DUMMER ANGEORDNET ALS SEIEN SIE ALLE GLEICH BREIT ! ]


i*breite würde nur gleichgroße kästen nebeneinander anordnen

um verschieden breite anzuordnen addiert man die koordinate und breite des vorherigen
diese zahl weist man dann der position des nächsten kastens an.
JA SEHR EINFACH, ich war ziemlich verpennt und habe das problem woanders gesucht.

HIER DAS FUNKTIONIERENDE SKRIPT :

Code:
var a:Array = ["DIE","BREITE","IST","FALSCH!"]; // Verschiedene Strings.

var space:Number=0;

for(var i:int=0;i<a.length;i++){
    var s:Sprite = new Sprite(); // Neuer Sprite.
    var t:TextField = new TextField(); // Neues TextFeld.
	
	
    t.autoSize = TextFieldAutoSize.LEFT; // Autovergrößerung an, linksbündig.
    t.wordWrap = false;
    t.multiline=false;
	t.selectable=false;
    t.border=true;
	t.textColor=0xFF0000;
	
	s.addChild(t);
	t.text=a[i]; // Jetzt den String zuweisen.
	s.y=30;
	s.graphics.beginFill(0xFFFFFF,0.4); // Transparenter Hintergrund...
	s.graphics.drawRect(0,0,s.width,s.height); // Um euch die
	s.graphics.endFill(); // grenzen zu verdeutlichen.
	
	s.x=space;
	space=s.x+s.width;

	addChild(s);
}
Hallo,
Ich finde keine Lösung.

Es geht um ein Dynamisch erstelltes Textfeld in einem Sprite.
Die Breite des Sprites entspricht nicht der sichtbaren Breite.

Seht euch dieses simple Script einfach an:

PHP-Code:
var a:Array = ["DIE","BREITE","IST","FALSCH!"]; // Verschiedene Strings.

for(var i:int=0;i<a.length;i++){
    var 
s:Sprite = new Sprite(); // Neuer Sprite.
    
var t:TextField = new TextField(); // Neues TextFeld.
    
    
    
t.autoSize TextFieldAutoSize.LEFT// Autovergrößerung an, linksbündig.
    
t.wordWrap false;
    
t.multiline=false;
    
t.border=true;
    
t.textColor=0xFF0000;

    
t.text=a[i]; // Jetzt den String zuweisen.

    
    
s.addChild(t);

    
graphics.beginFill(0xFFFFFF,0.4); // Transparenter Hintergrund...
    
graphics.drawRect(s.x,s.y,s.width,s.height); // Um euch die
    
graphics.endFill(); // grenzen zu verdeutlichen.

    
s.x=i*(s.width); // Alle schön nebeneinander positionieren, funktioniert nicht.
    
addChild(s);

Wieso
Ich werd gleich verrückt

Ich bitte euch, testet die Lösung bevor ihr sie postet.

Vielen Dank
/Vokator

Geändert von Vokator (26-03-2010 um 08:51 Uhr) Grund: CAPSLOCK AN DIE MACHT !!!!!!!!!
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 07:10   #2 (permalink)
Neuer Benutzer
 
Benutzerbild von webxvideo
 
Registriert seit: Nov 2003
Ort: berlin
Beiträge: 883
Die Standardgröße für ein Textfeld beträgt 100 x 100 Pixel.

Schau mal nach TextField.autoSize.
webxvideo ist offline   Mit Zitat antworten
Alt 26-03-2010, 07:38   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Die Reihenfolge der Parameterübergabe ist nicht ganz unwichtig!

t.text= "als letztes und nach dem AddChild()";
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 26-03-2010, 07:39   #4 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von webxvideo Beitrag anzeigen
Die Standardgröße für ein Textfeld beträgt 100 x 100 Pixel.

Schau mal nach TextField.autoSize.
autoSize ist drin.
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 07:42   #5 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von toosten Beitrag anzeigen
Die Reihenfolge der Parameterübergabe ist nicht ganz unwichtig!

t.text= "als letztes und nach dem AddChild()";
Danke, habe es ausprobiert
hat sich nichts geändert :

PHP-Code:
var a:Array = ["DIE","BREITE","IST","FALSCH!"];

for(var 
i:int=0;i<a.length;i++){
    var 
s:Sprite = new Sprite();
    var 
t:TextField = new TextField();
    
t.autoSize TextFieldAutoSize.LEFT;
    
t.wordWrap false;
    
t.multiline=false;
    
t.background=true;
    
t.border=true;
    
t.borderColor=0xFFFFFF;
    
t.textColor=0xFF0000;
    
s.addChild(t);
    
addChild(s);
    
s.addChild(t);
    
t.text=a[i];
    
t.x=i*t.width;

Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 07:57   #6 (permalink)
Trennschleifer
 
Benutzerbild von bobo_k1
 
Registriert seit: Apr 2004
Ort: Hamburg
Beiträge: 1.282
addChild IMMER als letzen Befehl ausführen
__________________
Es gibt nur zwei Arten von Menschen die Hawaiihemden tragen: Schwuchteln und dicke fette Partylöwen. Und du siehst nicht aus wie ein dicker fetter Partylöwe!" - Homer J. Simpson
bobo_k1 ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:02   #7 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von bobo_k1 Beitrag anzeigen
addChild IMMER als letzen Befehl ausführen
Es ändert sich =













.

Geändert von Vokator (26-03-2010 um 08:07 Uhr)
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:05   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
PHP-Code:
var tf:TextField= new TextField();
                                                    
addChildtf);
                                                    
tf.multiline=             true;
                                                    
tf.condenseWhite=         true;
                                                    
tf.mouseWheelEnabled=     true;
                                                    
tf.wordWrap=             true;
                                                    
tf.background=             true;
                                                    
tf.selectable=             false;
                                                    
                                                    var 
format:TextFormat=     new TextFormat(); 
                                                    
format.font"Arial"
                                                    
format.size13;
                                                    
format.bold0;
                                                    
tf.defaultTextFormatformat

                                                    
tf.width300;
                                                    
tf.autoSizeTextFieldAutoSize.LEFT;
                                                    
tf.text"TEXT"
Das funktioniert bei mir!
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:14   #9 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von toosten Beitrag anzeigen
PHP-Code:
var tf:TextField= new TextField();
                                                    
addChildtf);
                                                    
tf.multiline=             true;
                                                    
tf.condenseWhite=         true;
                                                    
tf.mouseWheelEnabled=     true;
                                                    
tf.wordWrap=             true;
                                                    
tf.background=             true;
                                                    
tf.selectable=             false;
                                                    
                                                    var 
format:TextFormat=     new TextFormat(); 
                                                    
format.font"Arial"
                                                    
format.size13;
                                                    
format.bold0;
                                                    
tf.defaultTextFormatformat

                                                    
tf.width300;
                                                    
tf.autoSizeTextFieldAutoSize.LEFT;
                                                    
tf.text"TEXT"
Das funktioniert bei mir!

Heute scheint echt nicht mein Tag zu sein,

NATÜRLICH FUNKTIONIERT DAS
DAS IST ABER AUCH EIN KOMPLETT ANDERES BEISPIEL !

Pack 10 verschiedene textfelder dynamisch in movieclips und versuch sie aneinander zu reihen.

PROBIERS DAMIT AUS :
es funktioniert nämlich nicht, wozu stelle ich euch den code zur verfügung?

PHP-Code:
var a:Array = ["DIE","BREITE","IST","FALSCH!"]; // Verschiedene Strings.

for(var i:int=0;i<a.length;i++){
    var 
s:Sprite = new Sprite(); // Neuer Sprite.
    
var t:TextField = new TextField(); // Neues TextFeld.

    
addChild(s);
    
s.addChild(t);
    
t.autoSize TextFieldAutoSize.LEFT// Autovergrößerung an, linksbündig.
    
t.wordWrap false// Wordwrap verhindern.
    
t.multiline=false// Alles auf einer Zeile.
    
t.border=true// Um euch die Grenzen zu zeigen.
    
t.textColor=0xFF0000// Und so knallt der Text schön.

    
t.text=a[i]; // Jetzt den String zuweisen.

    
graphics.beginFill(0xFFFFFF,0.4); // Transparenter Hintergrund...
    
graphics.drawRect(s.x,s.y,s.width,s.height); // Um euch die
    
graphics.endFill(); // grenzen zu verdeutlichen.

    
s.x=i*(s.width); // Alle schön nebeneinander positionieren, funktioniert nicht.

SO UND NOCHMAL SCHÖN KOMMENTIERT.
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:34   #10 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
DEIN CAPSLOCK-GESCHREIBE IST EIN BISSCHEN NERVIG, FINDEST DU NICHT AUCH?

wenn du mit i multiplizierst ist doch klar, dass da die falschen werte rauskommen.

deine x-werte = 0*22, 1*46, 2*22, 3*54

ActionScript:
  1. s.x = xSpace;
  2. xSpace += s.width;

3 tage dafür?
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode
figure8 ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:42   #11 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Thumbs up

Zitat:
Zitat von figure8 Beitrag anzeigen
DEIN CAPSLOCK-GESCHREIBE IST EIN BISSCHEN NERVIG, FINDEST DU NICHT AUCH?

wenn du mit i multiplizierst ist doch klar, dass da die falschen werte rauskommen.

deine x-werte = 0*22, 1*46, 2*22, 3*54

ActionScript:
  1. s.x = xSpace;
  2. xSpace += s.width;

3 tage dafür?
verdammt das hab ich jetzt davon wenn ich nachts sowas mache !

Ich habe in meinem leben noch nie mit verschiedenen breiten etwas angeordnet
meistens waren die kästen immer gleichgroß
das klappt auch super mit dem multiplizieren.

Ich idiot hab den fehler die ganze zeit woanders gesucht -_-

thanks
/v
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:43   #12 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
einfach in der for-schleife die widths tracen (die stimmen), und wo er dann die x-positionen setzt. dann wär dir das relativ schnell aufgefallen.
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode
figure8 ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:49   #13 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von figure8 Beitrag anzeigen
DEIN CAPSLOCK-GESCHREIBE IST EIN BISSCHEN NERVIG, FINDEST DU NICHT AUCH?

wenn du mit i multiplizierst ist doch klar, dass da die falschen werte rauskommen.

deine x-werte = 0*22, 1*46, 2*22, 3*54

ActionScript:
  1. s.x = xSpace;
  2. xSpace += s.width;

3 tage dafür?
Und ich hab keine 3 tage dafür gebraucht
wollte es nur dramatisieren, wäre ganz schön peinlich.
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:53   #14 (permalink)
Neuer User
 
Benutzerbild von Vokator
 
Registriert seit: Apr 2009
Beiträge: 91
Zitat:
Zitat von figure8 Beitrag anzeigen
einfach in der for-schleife die widths tracen (die stimmen), und wo er dann die x-positionen setzt. dann wär dir das relativ schnell aufgefallen.
hab es gemacht ist mir nichtmal dann aufgefallen
ich hab statdessen gedacht es sei ein bug, magie oder sonstwas

Ich hab fest daran geglaubt das textfeld hätte noch eine margin die sich falsch verhält aufgrund des AutoSize.

und so hab ich den fehler immer dort gesucht und die reihenfolge geändert.

aber daran gedacht das die breiten verschieden sind hab ich nicht
Vokator ist offline   Mit Zitat antworten
Alt 26-03-2010, 08:56   #15 (permalink)
lebt in stereo
 
Benutzerbild von figure8
 
Registriert seit: Mar 2008
Ort: karlsruhe
Beiträge: 1.093
naja, wenn die textfelder durch einen margin oder sonstiges erweitert worden wären hätten die sprites falsche breiten gehabt.

ja, dramaturgisch bist du mit capslocks, farben, bold und so natürlich ganz oben mit dabei
__________________
* Flash-JunkieMusiker & Grafiker

# Marvin Blase
# Speaker, Author, Silly Billy.
# @beautifycode
figure8 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
problem, textfield, width, wrong

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Image (Sprite) / width = 0? shoq ActionScript 3 2 26-05-2009 09:24
[Flash CS3] sprite czc Flash Einsteiger 3 14-03-2009 12:57
Hittest mit MC und Sprite TZP ActionScript 3 13 03-02-2009 18:00
Sprite bif baf ActionScript 3 4 26-08-2008 10:06
TextField in Sprite umwandeln? breezer84 Flex programmieren 2 16-04-2008 14:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele