Größe der Komponente richtig anpassen [Flash 9]
| Beiträge: 2 Registriert: Oct 2008
| 16.10.2008, 09:47
Hallo Leute,
ich habe ein Problem beim vergrößern einer eigenen Komponente und komme einfach nicht weiter.
Das hier ist die Komponente:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | // ActionScript file
package components
{
import mx.effects.Resize;
public class createTimelineCard extends Canvas {
/* Deklaration der Eigenschaften */
public var cardContainerPanel:Panel;
public var _cardWidth:int = 280;
public var _cardHeight:int = 320;
/* Konstruktor */
public function createTimelineCard() {
super();
}
/* initialisiert die Coverflow-Karte */
protected override function createChildren():void {
super.createChildren();
/* initialisiert die Komponenten */
if ( dateHeaderURL ) {
cardContainerPanel.title = dateHeaderURL;
cardContainerPanel.status = "";
cardContainerPanel.styleName = "cardContainer";
cardContainerPanel.percentHeight = 100;
cardContainerPanel.percentWidth = 100;
cardContainerPanel.horizontalScrollPolicy = "off";
cardContainerPanel.verticalScrollPolicy = "off";
/* fügt den Container auf der Bühne ein */
addChild(cardContainerPanel);
}
/* ausführbare Aktionen der Komponente */
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
this.cardWidth = 700;
}
public function changeCardStatus( event:Event ) :void {
var myResize:Resize = new Resize;
if (!cardStatus) { // Fullsize
myResize.target = this.cardContainerPanel;
myResize.widthTo = _cardWidth = 700;
myResize.heightTo = _cardHeight = 330;
myResize.duration = 2000;
myResize.play();
addChild(closeBtn);
cardStatus = true;
}else { // Normalsize
removeChild(closeBtn);
myResize.target = cardContainerPanel;
myResize.widthTo = _cardWidth = 280;
myResize.heightTo = _cardHeight = 320;
myResize.duration = 2000;
myResize.play();
cardStatus = false;
}
public function set cardWidth(value:int):void{
this._cardHeight = value;
}
public function get cardWidth():int{
return this._cardWidth;
}
public function set cardHeight(value:int):void{
this._cardHeight = value;
}
public function get cardHeight():int{
return this._cardHeight;
}
}// Ende class
}// Ende Package
|
und das hier ist der Aufruf in der MXML-Datei:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public function fillXMLtoCardsandShow(event:ResultEvent):void {
mainContent.removeAllChildren();
for (var i:Number=0; i<event.result.timeline.period.event.length; i++)
{
/* initialisiert */
var timelineCard:createTimelineCard = new createTimelineCard();
timelineCard.width = timelineCard.cardWidth;
timelineCard.height = timelineCard.cardHeight;
timelineCard.id = "myCard";
var cardID:Number = event.result.timeline.period.event[i].id;
}//Ende For-Schleife
}//Ende Funktion
|
Die Größe der Komponente ist nachdem sie initialisiert wurde fest und lässt sich nicht ändern. Gibt es da Abhilfe? | Geändert von rubo am 16.10.08 um 10:42 Uhr | |
| | Beiträge: 2 Registriert: Oct 2008
Themenautor/in
| 22.10.2008, 13:53
Hallo,
ich nochmal...
Habt ihr vielleicht einen tip für mich, wie ich mein Problem lösen könnte.
-> Ich habe eine Custum-Komponente erstellt und bringe diese per addChild() auf die Bühne.
Nachdem es auf der Bühne erstellt wurde ist die Größe erstmal fest.
Nun habe ich das Problem, dass ich die größe des Objekts ändern will und nicht weiss, wie ich das am besten mache.
1. Per States?
2. über ein eigenes Event?
3. oder kann ich das einfach über die updateDisplayList()-Funktion machen.
Wär super, wenn mir einer von euch da weiterhelfen könnte... | | | Beiträge: 4909 Wohnort: zuhaus Registriert: Apr 2004
| 22.10.2008, 14:08
speicher deine createTimelineCards (Klassennamen sollten eigentlich gross geschrieben werden) in ein array und greif dann auf die element im array zu und mit width, height sollte das eigentlich gehen....
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | private var timelineCardArray:Array;
public function fillXMLtoCardsandShow(event:ResultEvent):void {
timelineCardArray = new Array();
mainContent.removeAllChildren();
for (var i:Number=0; i<event.result.timeline.period.event.length; i++)
{
/* initialisiert */
var timelineCard:createTimelineCard = new createTimelineCard();
timelineCard.width = timelineCard.cardWidth;
timelineCard.height = timelineCard.cardHeight;
timelineCard.id = "myCard";
timelineCardArray.push(timelineCard);
var cardID:Number = event.result.timeline.period.event[i].id;
}//Ende For-Schleife
}//Ende Funktion
|
der aufruf dann so:
ActionScript:1 | createTimelineCard(timelineCardArray[0]).width = 500;
|
lieber chips essen und danach voller zweifel sein, als voller zweifel chips essen... | Geändert von springer am 22.10.08 um 14:09 Uhr | |
| | Beiträge: 791 Registriert: Apr 2004
| 22.10.2008, 14:34
Implementiere die measure():void adäquat, dann hast du das Problem nicht mehr. Der Layouter in Flex ist auf diese Methode angewiesen.Architectures - Refactoring - Prototyping - Coding - Training | |
| Ähnliche Beiträge zum Thema | 07.05.2019 - break-Flash-break |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|