• beyond tellerrand – play. Register Now!
Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-06-2009, 19:23   #1 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 13
Sprite skaliert child beim resizen

Ich möchte ein Sprite erzeugen welches ein fl.controls.TextInput als Child hat. Anschliessend möchte ich erreichen, dass das Sprite dieselbe Grösse hat wie das Child. Das Problem ist jedoch das sich beim setzen der höhe auf dem Sprite das Child skaliert was ich nicht vermeiden kann.

Der Code sieht wie folgt aus:
Code:
public class WrappedTextSprite extends Sprite {

		private var wrappedTextInput : TextInput = null;

		public function WrappedTextSprite () {
			this.wrappedTextInput = new TextInput();
			this.wrappedTextInput.text = "My Text Input Field";
			
			this.addChild(this.wrappedTextInput);
		}
		
		public function getWrappedTextInput () : TextInput {
			return this.wrappedTextInput;
		}
	}
In meiner Main Klasse füge ich ein solches WrappedTextSprite auf die Bühne und verändere seine Höhe auf die höhe des Textfeldes (22), anschliessend ist die Höhe des Textfeld so klein dass man nichts mehr lesen kann. (es wird skaliert)

Code:
public class Main extends Sprite {

		public function Main () {
			var wrappedTextSprite : WrappedTextSprite = new WrappedTextSprite();
			wrappedTextSprite.height = 22;
			
			this.addChild(wrappedTextSprite);
		}
	}
Kennt jemand eine Lösung wie ich ein Sprite resizen kann ohne die Childs?
Für mich ist es wichtig, da ich für mein Layout auf der Höhe der Widgets basiere und so kann ich das nicht, weil das Sprite eine Höhe angibt welche nicht die des Childs ist.

Vielen Dank für alle Ideen.
Michael Wittwer ist offline   Mit Zitat antworten
Alt 08-06-2009, 20:56   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Braunschweig
Beiträge: 163
Hallo,

ich halte dieses Konzept für keine gute Idee.
Das Konzept versucht gegen ein Grundprinzip
(alle Transformationen eines Containers betreffen
auch alle Childs) anzukämpfen.
Selbst wenn man das hinbekommt, wird es sicherlich
nicht schön.

Besser ist sicherlich das auf Ebenen zu verteilen:
Zu skalierendes Sprite nach hinten, TextInput nach vorne.

Grüße,
Matthias Kievernagel
mkiever ist offline   Mit Zitat antworten
Alt 09-06-2009, 07:39   #3 (permalink)
Alter User
 
Benutzerbild von Linowitch
 
Registriert seit: Nov 2006
Ort: München
Beiträge: 484
Ich stelle mir gerade die Frage warum du ein TextInput überhaupt in ein Sprite adden willst, alles was du mit einem Sprite machen kannst geht genauso mit dem TextInput.
Außerdem wird die höhe und breite eines neu erstelten Sprite bei addChild automatisch vergeben.

Vererbung:
TextInput => UIComponent => Sprite => DisplayObjectContainer => InteractiveObject => DisplayObject => EventDispatcher => Object

Sprite => DisplayObjectContainer => InteractiveObject => DisplayObject => EventDispatcher => Object
__________________
Gruß Linowitch
Wer glaubt gut zu sein hat aufgehört besser zu werden!

Website
Linowitch ist offline   Mit Zitat antworten
Alt 09-06-2009, 10:16   #4 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 13
Textkomponente aus Framework

Zuerst einmal vielen Dank für die Antworten.

@mkiever
Verstehe ich das richtig das ich also einen Container nicht beliebig in der Grösse verändern kann, ohne das sich der Inhalt anpasst.
Das mit den Ebenen habe ich noch nicht ganz verstanden.

@linowitch
Ich weiss ist nicht ganz alltäglich. Ich bin dabei ein eigenes Framwork mit diversen Widgetes zu entwickeln. Dabei will ich validierungs mechanismen einbauen welche visuell sichtbar sind (Icons bei Warning oder Error Status). Damit ich diese Icons neben dem TextInput feld anzeigen kann, habe ich dazu das TextInput Feld in einem Sprite gewrapped und zusätzlich noch zwei Icons auf das gleiche Sprite hinzugefügt.

Die Höhe wird tatsächlich beim added automatisch vergeben jedoch 100 x 100px was nicht dem Inhalt entspricht.

Nach dem setzen der Höhe des Sprites wird das TextInput Feld skaliert dargestellt wird. Wenn ich jedoch über
Code:
wrappedTextSprite.getWrappedTextInput.width
die Höhe auslese, erhalte ich immer noch 22, das ist für mich nicht verständlich. Dieses sollte eine skalierte höhe im verhältnis von 100px (ursprüngliche höhe des sprites) / 22px (höhe des textInput felds) = ca. 5 -> also ca. 1/5 von 22 (höhe des TextInput felds) = ca. 4 sein.
Michael Wittwer ist offline   Mit Zitat antworten
Alt 09-06-2009, 10:49   #5 (permalink)
vermisst ein e
 
Benutzerbild von kRizzl
 
Registriert seit: Oct 2007
Beiträge: 774
die ganzen transformations-properties (x,y,width,height,scaleX,scaleY,rotation) von jedem DisplayObject werden jeweils in dem koordinatenraum des parent-objektes gesehen, also desjenigen DisplayObjectContainers, dem es hinzugefuegt wurde.

wenn du ein Sprite inner hast und das einem Sprite outer hinzufuegst, das wiederum auf der buehne liegt (stage -> outer -> inner) und du drehst outer um 180° auf den kopf. dann veraenderst du die x-position von inner um 10 (also in seinem container nach rechts), siehst aber, dass es sich auf der buehne letztendlich nach links bewegt. eben weil sein container und dessen koordinatenraum um 180° gedreht wurden.
__________________
krisrok.de
kRizzl ist offline   Mit Zitat antworten
Alt 09-06-2009, 13:03   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2009
Ort: Braunschweig
Beiträge: 163
Hallo,

das mit den Ebenen hat sich nach der weiteren Erläuterung
(fast) erledigt.
Zitat:
Ich weiss ist nicht ganz alltäglich. Ich bin dabei ein eigenes Framwork mit diversen Widgetes zu entwickeln. Dabei will ich validierungs mechanismen einbauen welche visuell sichtbar sind (Icons bei Warning oder Error Status). Damit ich diese Icons neben dem TextInput feld anzeigen kann, habe ich dazu das TextInput Feld in einem Sprite gewrapped und zusätzlich noch zwei Icons auf das gleiche Sprite hinzugefügt.
Ganz ganz richtig geht man dann wohl vor, indem man eine Custom Komponente
von TextInput ableitet. In der muß dann bei der Platzberechnung
zusätzlicher Platz für das (die) Icon(s) vorgehalten werden
und beim Rendering die zusätzlichen Kindkomponenten (Icon(s))
hinzugefügt und plaziert werden. Da kann ich aber aus dem Kopf
keine weitere Hilfe geben. Da gibt es ein eigenes Handbuch von Herrn
Adobe für, welches ich noch nicht gelesen habe.

Grüße,
Matthias Kievernagel
mkiever ist offline   Mit Zitat antworten
Alt 10-06-2009, 16:41   #7 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 13
Problem gelöst - Workaround

Ich nehme mal nicht an dass meine Vorgehensweise wirklich dem Konzept von Adobe entspricht. Ich entschied mich jedoch für diese Lösung weil ich vor allem programmatisch (fdt) arbeite und mich nicht zu fest mit der ide Auseinander setzen möchte. So habe ich die "volle Kontrolle".

Ich habe nun eine Lösung gefunden. Ich habe statt dem TextInput das TextField gewrappt. Bei dieser Komponente passt sich das parent, also das Sprite der Grösse an und mein Problem ist gelöst. (auch wenn wahrscheinlich nicht auf die schönste Art)

Vielen Dank noch einmal für die Hinweise und Antworten
Michael Wittwer ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
child, resize, sprite

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 01:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele