| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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;
}
} Code: public class Main extends Sprite {
public function Main () {
var wrappedTextSprite : WrappedTextSprite = new WrappedTextSprite();
wrappedTextSprite.height = 22;
this.addChild(wrappedTextSprite);
}
} 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. |
| | |
| | #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 |
| | |
| | #3 (permalink) |
| Alter User 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 |
| | |
| | #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 |
| | |
| | #5 (permalink) |
| vermisst ein e 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 |
| | |
| | #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:
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 | |
| | |
| | #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 |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| child, resize, sprite |
| Themen-Optionen | |
| Ansicht | |
| |