Flashhilfe.de - Flash Community

meine erste klasse so tauglich? [Flash CS3]

 


AntwortenRegistrieren Seite1 2  

emotion#1
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

02.12.2008, 03:59

Ich habe soeben meine erste Klasse erstellt und jetzt würde mich echt mal interessieren ob diese Klasse so einigermassen Sinn macht?! hab ich da gegen irgendwelche Grundregeln der objektorientierten Programmierung verstossen? =)
wäre sehr an konstruktiver Kritik interessiert damit ich mir da nicht schlechte Angewohnheiten schaffe..

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package
{
   import flash.display.Sprite;
   import flash.display.Shape;
   import flash.display.Loader;
   import flash.net.URLRequest;
   import flash.events.ProgressEvent;
   import flash.events.Event;
   import flash.events.IOErrorEvent;
   import flash.text.TextField;
   import flash.text.TextFormat;
   
   public class Polaroid extends flash.display.Sprite
   {
      private var _ladefortschritt:uint = 0; //Ladefortschritt in Prozent
      private var _maxfotolaenge:uint = 600;
      private var _rahmenbreite:uint = 25;
      private var _kommentarhoehe:uint = 65;
      private var _schriftart:String = "Handwriting - Dakota";
      private var _schriftgroesse:uint = 22;
      private var _enableBildrahmen:Boolean = false;
      private var _bild:Loader = new Loader();
      private var _fotopapier:Shape = new Shape();
      private var _kommentar:TextField = new TextField();
      private var _txt:String = new String();
      private var _polaroid:Sprite = new Sprite();
      
      public var pfeillinks:Sprite = new Sprite(); //Button für Links-Navigation
      public var pfeilrechts:Sprite = new Sprite(); //Button für Rechts-Navigation
      
      public function Polaroid(pfad:String, txt:String = "", maxfotolaenge:uint = 600,
                         rahmenbreite:uint = 25, kommentarhoehe:uint = 65,
                         schriftart:String = "Handwriting - Dakota", schriftgroesse:uint = 22,
                         enableBildrahmen:Boolean = false):void
      {
         _txt = txt;
         _maxfotolaenge = maxfotolaenge;
         _rahmenbreite = rahmenbreite;
         _kommentarhoehe = kommentarhoehe;
         _schriftart = schriftart;
         _schriftgroesse = schriftgroesse;
         _enableBildrahmen = enableBildrahmen;
         ladeFoto(pfad);
      }
      
      public function get ladefortschritt():uint
      {
         return _ladefortschritt;
      }
      
      private function ladeFoto(pfad:String):void
      {
         //Foto laden
         var url:URLRequest = new URLRequest(pfad);
         _bild.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ladefehler);
         _bild.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, ladestatus);
         _bild.contentLoaderInfo.addEventListener(Event.COMPLETE, geladen);
         _bild.load(url);

         function ladefehler(evt:IOErrorEvent):void
         {
            trace(evt.text);
         }
         
         function ladestatus(evt:ProgressEvent):void
         {
            _ladefortschritt = Math.round(100 / evt.bytesTotal * evt.bytesLoaded);
         }
         
         function geladen(evt:Event):void
         {
            polaroidkreieren();
         }
      }
      
      private function polaroidkreieren():void
      {
         //Bildgrösse an maximaler Fotolänge anpassen und positionieren
         if(_bild.contentLoaderInfo.width / _bild.contentLoaderInfo.height >= 1)    //wenn Breitformat
         {
            _bild.content.width = _maxfotolaenge;
            _bild.content.height = _maxfotolaenge / _bild.contentLoaderInfo.width * _bild.contentLoaderInfo.height;
         }
         else                                 //wenn Hochformat
         {
            _bild.content.height = _maxfotolaenge;
            _bild.content.width = _maxfotolaenge / _bild.contentLoaderInfo.height * _bild.contentLoaderInfo.width;
         }
            
         _bild.x = _rahmenbreite;
         _bild.y = _rahmenbreite;
         
         //Polaroid-Papier zeichnen
         _fotopapier.graphics.beginFill(0xFFFFFF);
         _fotopapier.graphics.lineStyle(1, 0x000000);
         _fotopapier.graphics.drawRect(0, 0, _bild.content.width + 2 * _rahmenbreite, _bild.content.height + _rahmenbreite + _kommentarhoehe);
         
         //Rahmen um Foto falls erwünscht
         if(_enableBildrahmen == true)
         {
            _fotopapier.graphics.beginFill(0xFFFFFF);
            _fotopapier.graphics.lineStyle(2, 0x999999);
            _fotopapier.graphics.drawRect(_rahmenbreite, _rahmenbreite, _bild.content.width, _bild.content.height);
         }
         
         //Kommentar-Textfeld erstellen
         _kommentar.autoSize = "center";
         _kommentar.wordWrap = true;
         _kommentar.width = _bild.content.width;
         _kommentar.type = "dynamic";
         _kommentar.selectable = false;
         var textformat:TextFormat = new TextFormat();
         textformat.font = _schriftart;
         textformat.size = _schriftgroesse;
         textformat.align = "center";
         _kommentar.defaultTextFormat = textformat;
         _kommentar.text = _txt;
         _kommentar.x = _rahmenbreite;
         _kommentar.y = _rahmenbreite + _bild.content.height + _kommentarhoehe / 2 - _kommentar.height / 2;
         
         //Navigation erstellen
         var pfeillinkstext:TextField = new TextField();
         pfeillinkstext.autoSize = "center";
         pfeillinkstext.type = "dynamic";
         pfeillinkstext.selectable = false;
         pfeillinkstext.mouseEnabled = false; //damit der Handcursor beim Button "pfeillinks" funktioniert!
         pfeillinkstext.defaultTextFormat = new TextFormat(null, 22);
         pfeillinkstext.text = String.fromCharCode(0171);
         pfeillinkstext.x = 0;
         pfeillinkstext.y = 0;
         pfeillinks.addChild(pfeillinkstext);
         pfeillinks.y = _rahmenbreite / 2 - pfeillinkstext.height / 2;
         pfeillinks.x = (_bild.content.width + 2 * _rahmenbreite) / 2 - pfeillinkstext.width / 2 - 15;
         pfeillinks.buttonMode = true;

         var pfeilrechtstext:TextField = new TextField();
         pfeilrechtstext.autoSize = "center";
         pfeilrechtstext.type = "dynamic";
         pfeilrechtstext.selectable = false;
         pfeilrechtstext.mouseEnabled = false; //damit der Handcursor beim Button "pfeilrechts" funktioniert!
         pfeilrechtstext.defaultTextFormat = new TextFormat(null, 22);
         pfeilrechtstext.text = String.fromCharCode(0187);
         pfeilrechtstext.x = 0;
         pfeilrechtstext.y = 0;
         pfeilrechts.addChild(pfeilrechtstext);
         pfeilrechts.y = _rahmenbreite / 2 - pfeilrechtstext.height / 2;
         pfeilrechts.x = (_bild.content.width + 2 * _rahmenbreite) / 2 - pfeilrechtstext.width / 2 + 15;
         pfeilrechts.buttonMode = true;
         
         //Anzeigeobjekt-Container für Polaroid erstellen
         _polaroid.addChild(_fotopapier);
         _polaroid.addChild(_bild);
         _polaroid.addChild(_kommentar);
         _polaroid.addChild(pfeillinks);
         _polaroid.addChild(pfeilrechts);
         _polaroid.x = - _polaroid.width / 2;   //Registrierungspunkt zentrieren
         _polaroid.y = - _polaroid.height / 2;
         addChild(_polaroid);
      }
   }
}


Gute Nacht
emotion
Geändert von emotion am 02.12.08 um 16:07 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


MicMac#2
Benutzerbild von MicMac
Beiträge: 29
Wohnort: Köln
Registriert: Nov 2007

02.12.2008, 15:25

Sieht doch ganz gut aus!
Mann kann das Script nachvollziehen und hast auch bis auf
"private var _enableBildrahmen:Boolean = false;" die variablen Bezeichnung einheitlich.

Könntest aber auch noch eine Kommentar oder Navigations Klasse erstellen.

Ein gutes Buch über OOP ist meiner Meinung nach das von "Peter Elst, Object-Oriented AS 3.0,  Verlag: friendsofed

Wollte mir mal das Ergebniss anschauen, bekomme aber folgende Fehlermeldung:
ArgumentError: Error #1063: Nicht übereinstimmende Argumentzählung für Polaroid(). 1 erwartet, 0 erhalten.
Die Fehlermeldung kenne ich nur im Zusammenhang mit EventListenern nicht aber mit dem Konstruktor.

Noch viel Erfolg! :)

P.S.: Wohnst du zufällig in der nähe von Köln?
Könnte dir das Buch dann auch mal zur Einsicht geben.
Grüsse Michael
Geändert von MicMac am 02.12.08 um 15:42 Uhr
emotion#3
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

02.12.2008, 15:40

Dankeschön für dein Interesse!
du meinst wohl den Pascal Case bei _enableBildrahmen korrekt?
Könntest du mir das mit der Navigations und Kommentarklasse einwenig beschreiben?
Komisch dass das Script bei dir nicht läuft, bei mir kommt keine Fehlermeldung..

Ne leider wohne ich in der Schweiz=) aber ich werd das Buch mal anschauen.. bis anhin hab ich das Buch von Galileo Design "Actionscript 3" durchgearbeitet..

Gruss
emotion
Geändert von emotion am 02.12.08 um 15:44 Uhr
MicMac#4
Benutzerbild von MicMac
Beiträge: 29
Wohnort: Köln
Registriert: Nov 2007

02.12.2008, 18:25

Nutze auch das "Praxisbuch  AS3 von Galileo Design" und hatte gedacht ich schreibe PascalCase bin aber nun darauf gestoßen dass da wohl ein Dreher im Buch ist:
Habe sowohl im OOP Buch als auch in folgendem Forumsbeitrag gelesen dass so PascalCase und
camelCase geschrieben wird!

camelCase = thisIsMyVariable
PascalCase = ThisIsMyVariable

[url=http://www.flashforum.de/forum/archive/index.php/t-198069.html][/url]

Beschäftige mich selbst noch mit den OOP Grundlagen, vielleicht kann Dir dass jemand besser erklären?
Grüsse Michael
Geändert von MicMac am 02.12.08 um 18:27 Uhr
Werbung
Beiträge: 0
Registriert: Feb 2016


emotion#5
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

02.12.2008, 19:06

hab mich mal bei wikipedia schlau gemacht=)

"Wenn man von CamelCase spricht, dann ist meist die lowerCamelCase-Variante gemeint, bei der der erste Buchstabe kleingeschrieben ist. Oft findet man aber auch die UpperCamelCase-Variante – auch PascalCase genannt. Diese ist vor allem in der .NET-Welt üblich."

und? wie findest du das Galileo Design AS3? Mir hat es irgendwie zuwenige praktische Beispiele vorallem bezüglich Klassen..

Hast du schon in anderen Programmiersprachen Erfahrung oder ist AS3 dein Einstieg in die Programmierwelt?

Gruss
emotion
Geändert von emotion am 02.12.08 um 19:12 Uhr
omega psi#6
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

02.12.2008, 19:57

Ich würde dir empfehlen:
* Konstruktor parameterlos
* Setzen der Werte über get/set Accessors
* Initial/Defaultwerte setzen in einer initialize Methode
* Sprache: englisch
* keine "nested functions", Zeile 60-73
Architectures - Refactoring - Prototyping - Coding - Training
emotion#7
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

02.12.2008, 22:23

danke für deine Tipps!
Kannst du mir begründen warum der Konstruktor parameterlos sein soll?
Das mit get/set habe ich soweit versucht.. was mache ich wenn ich einen Button in der Klasse erstellt habe und ihn extern ansprechen möchte, also z.B. einen EventListener hinzufügen?
die Initialmethode sollte die public sein?
Englisch macht wohl sinn..
ähm.. was ist eine nested function? hab nix darüber gefunden=/

Gruss
emotion
omega psi#8
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

02.12.2008, 23:18

Ein Konstrukor sollte parameterlos sein, da sich Objekte selbst um ihre Ersteklung kümmern gerade m Fall von Sprites sieht man das deutlich: die brauchen keine Parameter. In vielen ist es reine bequemlichkeit, was auch ok ist. Aber im Endeffekt ist das Objekt immer vom Aufrufer abhängig, und das ist nicht gut...

Wenn du einen Sprite erstellt hast ist dieser ein EventDispatcher und du kannst EventListener regisitrieren. Interne EventListener werden in der Regel private gesetzt.

Ich würde nur die Accessors public setzen und Methoden, die aussen bekannt sein müssen.

Eine nested function ist eine Funktion, die in einer Anderen Funktion deklariert und implementiert wird. Das ist schlecht, dann wenn eine Funktion durch ist, sind alle lokalen Variablen nur noch in den Closures - und dann weg. Gerade bei EventListener ist das böse. Also alle Funktionen im Scope der Klassen dekl. und impl.
Architectures - Refactoring - Prototyping - Coding - Training
emotion#9
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

03.12.2008, 00:09

hm.. aber wenn ich nun ein Polaroid erstelle und das ohne Pfad zum Foto(ohne Parameter im Konstruktor), dann zeichnet meine Klasse ein leeres Polaroid mit den Standartwerten.  Ich möchte aber ein Bild im Polaroid, also muss ich nun den Pfad übergeben z.B. mit einer Methode "loadPhoto("Pfad");". Jetzt muss meine Klasse das Polaroid nochmals zeichnen.. also doppeltes abarbeiten des Codes?! oder wie löst man sowas ohne Parameterübergabe? Sollte meine Klasse noch gar nichts Zeichnen mit dem Konstruktor bzw. mit der Initialisierungsfunktion?
omega psi#10
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

03.12.2008, 08:43

Ich würde dir empfehlen, den LadeMechanismus aus der Polaroid-Klasse rauszunehmen und stattdessen nur das Bild (Bitmap/BitmapData) zu übergeben. Aber das dann erst als Property.
Architectures - Refactoring - Prototyping - Coding - Training
emotion#11
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

03.12.2008, 12:37

das mit dem internen Ladevorgang passt mir auch nicht so recht.. kann das mal umprogrammieren. Aber was soll denn mit dem Konstruktor generiert werden? Soll da noch gar kein Polaroid gezeichnet werden? Denn das Polaroid ist abhängig vom Bildformat.. daher kann das Polaroid eigentlich erst nach der Übergabe konstruiert werden..
omega psi#12
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

03.12.2008, 13:32

Der Kostruktor braucht keine Daten. Es reicht, wenn du die nötigen Werte generierst, wenn du das Bild geladen hast. Ausserdem hat das den Vorteil, dass du Polaroid Instanzen wieder verwenden kannst.
Architectures - Refactoring - Prototyping - Coding - Training
MicMac#13
Benutzerbild von MicMac
Beiträge: 29
Wohnort: Köln
Registriert: Nov 2007

03.12.2008, 14:30

Zitat:"und? wie findest du das Galileo Design AS3? Mir hat es irgendwie zuwenige praktische Beispiele vorallem bezüglich Klassen.."
@ emotion:
ja, oop wird nur am Rande behandelt und ich habe mir dann mit
Essential AS3 Colin Moock Verlag: O`Reilly  und
Peter Elst, Object-Oriented AS 3.0,  Verlag: friendsofed
weitergeholfen.
Ich komme aus dem Design Bereich und habe mit AS2 begonnen, und bin dann früh zu As3 gewechselt.

Keith Peters nutzt in seinem Buch "As3 Animation"  folgende "Skeleton document class"
Vielleicht hilft dir das ja weiter?
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
package {
   import flash.display.Sprite;
   
   public class Example extends Sprite{
      public function Example() {
         init();
      }
      private function init() :void {
         //sample code goes on here
         }
      }
   }

Grüsse Michael
omega psi#14
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

03.12.2008, 15:14

Was so ziemlich dem entspricht, was ich auch vorschlug.
Architectures - Refactoring - Prototyping - Coding - Training
emotion#15
Benutzerbild von emotion
Beiträge: 191
Registriert: Jun 2008

Themenautor/in

03.12.2008, 17:28

ok ich hab jetzt meine Klasse nochmals überarbeitet:

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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
package
{
   import flash.display.Bitmap;
   import flash.display.Sprite;
   import flash.display.Shape;
   import flash.text.TextField;
   import flash.text.TextFormat;
   
   public class Polaroid extends flash.display.Sprite
   {
      private var _maxPictureLenght:uint = 600;   //maximale Bildlänge horizonal bzw. vertikal
      private var _borderWidth:uint = 25;      //Rahmenbreite des Polaroid
      private var _commentHeight:uint = 65;   //Höhe des Kommentarbereiches
      private var _commentFont:String = "Handwriting - Dakota";   //Schriftart des Kommentars
      private var _commentSize:uint = 22;      //Schriftgrösse des Kommentars
      private var _enableBorder:Boolean = false;      //zusätzlicher Rahmen ums Bild aktivieren/deaktivieren
      private var _commentTextfield:TextField = new TextField();   //Kommentar-Textfeld
      private var _pictureComment:String = new String();      //Bildkommentar
      private var _polaroid:Sprite = new Sprite();   //komplettes Polaroid-Objekt
      private var _picture:Bitmap = new Bitmap();
      
      public var arrowLeft:Sprite = new Sprite(); //Button für Links-Navigation
      public var arrowRight:Sprite = new Sprite(); //Button für Rechts-Navigation
      public var picSpriteContainer:Sprite = new Sprite(); //Objekt-Container des Bildes damit Bild als Button verwendbar
      
      public function Polaroid():void
      {
      }
      
      public function createPolaroid():void
      {
         if(_picture.bitmapData != null)
         {
            paintPolaroid();
         }
         else
         {
            trace("picture-Parameter nicht gesetzt");
         }
      }
      
      public function set picture(pic:Bitmap):void
      {
         _picture = pic;
      }
      
      public function get picture():Bitmap
      {
         return _picture;
      }
      
      public function set maxPictureLenght(maxLenght:uint):void
      {
         _maxPictureLenght = maxLenght;
      }
      
      public function get maxPictureLenght():uint
      {
         return _maxPictureLenght;
      }
      
      public function set borderWidth(bWidth:uint):void
      {
         _borderWidth = bWidth;
      }
      
      public function get borderWidth():uint
      {
         return _borderWidth;
      }
      
      public function set commentHeight(cHeight:uint):void
      {
         _commentHeight = cHeight;
      }
      
      public function get commentHeight():uint
      {
         return _commentHeight;
      }
      
      public function set commentFont(cFont:String):void
      {
         _commentFont = cFont;
      }
      
      public function get commentFont():String
      {
         return _commentFont;
      }
      
      public function set commentSize(cSize:uint):void
      {
         _commentSize = cSize;
      }
      
      public function get commentSize():uint
      {
         return _commentSize;
      }
      
      public function set enableBorder(eBorder:Boolean):void
      {
         _enableBorder = eBorder;
      }
      
      public function get enableBorder():Boolean
      {
         return _enableBorder;
      }
      
      public function set pictureComment(picComment:String):void
      {
         _pictureComment = picComment;
         _commentTextfield.text = _pictureComment;
      }
      
      public function get pictureComment():String
      {
         return _pictureComment;
      }
      
      private function paintPolaroid():void
      {
         //Bildgrösse an maximaler Fotolänge anpassen und positionieren
         if(_picture.loaderInfo.width / _picture.loaderInfo.height >= 1)    //wenn Breitformat
         {
            _picture.width = _maxPictureLenght;
            _picture.height = _maxPictureLenght / _picture.loaderInfo.width * _picture.loaderInfo.height;
         }
         else                                                //wenn Hochformat
         {
            _picture.height = _maxPictureLenght;
            _picture.width = _maxPictureLenght / _picture.loaderInfo.height * _picture.loaderInfo.width;
         }
         
         while(picSpriteContainer.numChildren > 0)
         {
            picSpriteContainer.removeChildAt(0);
         }
         picSpriteContainer.addChild(_picture);
         picSpriteContainer.x = _borderWidth;
         picSpriteContainer.y = _borderWidth;
         
         //Polaroid-Papier zeichnen
         var photoPaper:Shape = new Shape();
         photoPaper.graphics.beginFill(0xFFFFFF);
         photoPaper.graphics.lineStyle(1, 0x000000);
         photoPaper.graphics.drawRect(0, 0, _picture.width + 2 * _borderWidth, _picture.height + _borderWidth + _commentHeight);
         
         //Rahmen um Foto falls erwünscht
         if(_enableBorder == true)
         {
            photoPaper.graphics.beginFill(0xFFFFFF);
            photoPaper.graphics.lineStyle(2, 0x999999);
            photoPaper.graphics.drawRect(_borderWidth, _borderWidth, _picture.width, _picture.height);
         }
         
         //Kommentar-Textfeld erstellen
         _commentTextfield.autoSize = "center";
         _commentTextfield.wordWrap = true;
         _commentTextfield.width = _picture.width;
         _commentTextfield.type = "dynamic";
         _commentTextfield.selectable = false;
         var textFormat:TextFormat = new TextFormat();
         textFormat.font = _commentFont;
         textFormat.size = _commentSize;
         textFormat.align = "center";
         _commentTextfield.defaultTextFormat = textFormat;
         _commentTextfield.text = _pictureComment;
         _commentTextfield.x = _borderWidth;
         _commentTextfield.y = _borderWidth + _picture.height + _commentHeight / 2 - _commentTextfield.height / 2;
         
         //Navigation erstellen
         var arrowTextFormat:TextFormat = new TextFormat();
         arrowTextFormat.bold = true;
         arrowTextFormat.size = 22;

         var arrowLeftText:TextField = new TextField();
         arrowLeftText.autoSize = "center";
         arrowLeftText.type = "dynamic";
         arrowLeftText.selectable = false;
         arrowLeftText.mouseEnabled = false; //damit der Handcursor beim Button "pfeillinks" funktioniert!
         arrowLeftText.defaultTextFormat = arrowTextFormat;
         arrowLeftText.text = String.fromCharCode(0706);
         arrowLeftText.x = 0;
         arrowLeftText.y = 0;
         arrowLeft.addChild(arrowLeftText);
         arrowLeft.y = _borderWidth / 2 - arrowLeftText.height / 2;
         arrowLeft.x = (_picture.width + 2 * _borderWidth) / 2 - arrowLeftText.width / 2 - 15;
         arrowLeft.buttonMode = true;

         var arrowRightText:TextField = new TextField();
         arrowRightText.autoSize = "center";
         arrowRightText.type = "dynamic";
         arrowRightText.selectable = false;
         arrowRightText.mouseEnabled = false; //damit der Handcursor beim Button "arrowRight" funktioniert!
         arrowRightText.defaultTextFormat = arrowTextFormat;
         arrowRightText.text = String.fromCharCode(0707);
         arrowRightText.x = 0;
         arrowRightText.y = 0;
         arrowRight.addChild(arrowRightText);
         arrowRight.y = _borderWidth / 2 - arrowRightText.height / 2;
         arrowRight.x = (_picture.width + 2 * _borderWidth) / 2 - arrowRightText.width / 2 + 15;
         arrowRight.buttonMode = true;
         
         //Anzeigeobjekt-Container für Polaroid erstellen
         while(_polaroid.numChildren > 0)
         {
            _polaroid.removeChildAt(0);
         }
         _polaroid.addChild(photoPaper);
         _polaroid.addChild(picSpriteContainer);
         _polaroid.addChild(_commentTextfield);
         _polaroid.addChild(arrowLeft);
         _polaroid.addChild(arrowRight);
         _polaroid.x = - _polaroid.width / 2;   //Registrierungspunkt zentrieren
         _polaroid.y = - _polaroid.height / 2;
         addChild(_polaroid);
      }
   }
}


Passt das so einigermassen?
Ich hab nun keine Initialisierungs-Funktion in den Konstruktor gepackt, wüsste nicht was ich ohne Bitmap schon initialisieren könnte!?
Wenn ich jetzt nicht alle Eigenschaften einzeln setzen möchte, wie lässt sich das lösen? Bei  z.B. der Klasse "TextFormat" kann man ja auch gleich die Parameter bei new TextFormat(bla,bla,bla..) übergeben.

Gibts eigentlich auch ein gutes deutsches Buch über OOP? Englisch ist schon ok aber bin viel schneller wenns deutsch ist..
Geändert von emotion am 03.12.08 um 17:30 Uhr
omega psi#16
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

03.12.2008, 18:44

Rufe doch die createPolaroid im setter für picture auf...
Architectures - Refactoring - Prototyping - Coding - Training

AntwortenRegistrieren Seite1 2  

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   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de