Flashhilfe.de - Flash Community

Größe der Komponente richtig anpassen [Flash 9]

 


AntwortenRegistrieren Seite1  

rubo#1
Benutzerbild von rubo
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
rubo#2
Benutzerbild von rubo
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...
springer#3
Benutzerbild von springer
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:
1createTimelineCard(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
omega psi#4
Benutzerbild von omega psi
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

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2021 Sebastian Wichmann - Flashhilfe.de