Flashhilfe.de - Flash Community

Button class erstellen [Flash 9]

 


AntwortenRegistrieren Seite1 2 3 4  

oma420#1
Benutzerbild von oma420
Beiträge: 102
Registriert: Oct 2008

15.10.2008, 11:17

Guten Morgen zusammen,

Ich möchte eine ein ganz normale Button classe erstellen, nur weiß ich nicht genau wie ich anfangen soll.

Also hab ich erst mal ein viereck dynamisch bebaut *, dann ein Textfeld, ich weiß es aber nicht, ob dies richtig ist.

Der Button soll zwei Eigenschaften haben,  "Farbe" und "Text"

Wenn mann in der Haubtseite die classe auf ruft
soll mann die Werte "Farbe" "Text" eingeben können.


ActionScript:
1
2
3
import klassen.Buttons;
var _button:Buttons = new Buttons("Farbe", "Text");
addChild(_button);


Kann jemand mir ein Tipp geben, wie das funtioniert.

*
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
package klassen{
   
   import flash.display.Sprite;
   import flash.events.*;
   import flash.text.TextField;
   
   public class Buttons extends Sprite{
      
      public function Buttons():void{
   
         var button:Sprite = new Sprite;
         var txt:TextField = new TextField;
         var test:Button = new Button();
         
         button.graphics.beginFill(0xEE0099);
         button.graphics.drawRect(0, 0, 80, 25);
         button.graphics.endFill();
         
         addChild(button);
   
         test.width       = 100;
         test.height      = 30;
                  
         addChild(test);
         
      }
   }
}

Gruß,

Oma420
rendner#2
Benutzerbild von rendner
Beiträge: 1016
Wohnort: derzeit München
Registriert: Jul 2004

15.10.2008, 11:25

Klasse würde ich Button nennen, da sie auch nur einen erstellt und nicht mehrere.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package klassen{
 
  import flash.display.Sprite;
  import flash.text.TextField;
 
  public class Button extends Sprite{
     
      public function Button( color:Number, label:String ):void
    {
        super();

        var button:Sprite = new Sprite;
        button.graphics.beginFill( color );
        button.graphics.drawRect(0, 0, 80, 25);
        button.graphics.endFill();
        addChild(button);

          var txt:TextField = new TextField;
          txt.text = label;
          addChild(button);
      }
  }
}


ActionScript:
1
2
3
import klassen.Button;
var _button:Button = new Button( 0xFF0000, "Text" );
addChild(_button);
rendner
Geändert von rendner am 15.10.08 um 11:27 Uhr
oma420#3
Benutzerbild von oma420
Beiträge: 102
Registriert: Oct 2008

Themenautor/in

15.10.2008, 12:52

super danke  :)

hast aber ein kleinen Fehler :)

ActionScript:
1
2
3
var txt:TextField = new TextField;
          txt.text = label;
          addChild(button);


ActionScript:
1addChild(txt);
Gruß,

Oma420
badskill#4
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

15.10.2008, 13:01

So, wie sich mir das darstellt, braucht man keinen extra Sprite (button).
Man kann in diesem Fall auch direkt in die graphics-Eigenschaft der Klasse den Hintergrund zeichnen.
XION#5
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

15.10.2008, 15:17

Reservierte Schlüsselwörter/Klassenbezeichner für eigene Klassennamen zu nutzen ist aber auch ganz schön oll.

Benenne deine Klasse lieber so, dass du (und das System) sie als DEINE Klasse wiedererkennst:
RectButton, BlueButton, GuiButton, MyButton

Wie auch immer, nur halt nicht Button.
XION
Geändert von XION am 15.10.08 um 15:19 Uhr
oma420#6
Benutzerbild von oma420
Beiträge: 102
Registriert: Oct 2008

Themenautor/in

15.10.2008, 15:23

also ich hab noch eine frage, das ist doch eigentlich nicht einrichtiges Button, sondern ein viereck und dadrin ein Text oder?

Und wenn ich jetzt z.B ein langen Text habe(label), das wird dich nicht mit mein button größer,
bekommt man das durch autosize?
Oder wie soll ich das machen?
Gruß,

Oma420
oma420#7
Benutzerbild von oma420
Beiträge: 102
Registriert: Oct 2008

Themenautor/in

15.10.2008, 15:25

Reservierte Schlüsselwörter/Klassenbezeichner für eigene Klassennamen zu nutzen ist aber auch ganz schön oll.

Benenne deine Klasse lieber so, dass du (und das System) sie als DEINE Klasse wiedererkennst:
RectButton, BlueButton, GuiButton, MyButton

Wie auch immer, nur halt nicht Button.


Das hab ich schon ;)
Gruß,

Oma420
rendner#8
Benutzerbild von rendner
Beiträge: 1016
Wohnort: derzeit München
Registriert: Jul 2004

15.10.2008, 15:37

Reservierte Schlüsselwörter/Klassenbezeichner für eigene Klassennamen zu nutzen ist aber auch ganz schön oll.
Wieso, so etwas gibts in jeder Programmiersprache und es spricht nichts dagegen. Damit da keine Kollisionen auftreten hast du ja immer noch den Namen des packages.
Zumindest ich würde mir nicht unbedingt nen anderen Namen ausdenken, wenn dieser schon von jemanden anderen genutzt wird.
rendner
oma420#9
Benutzerbild von oma420
Beiträge: 102
Registriert: Oct 2008

Themenautor/in

15.10.2008, 16:45

ich glaub ihr habt dies übersehen :)
weil zwei Nachrichten von mir fast gleichzeitig kamen.

also ich hab noch eine frage, das ist doch eigentlich nicht einrichtiges Button, sondern ein viereck und dadrin ein Text oder?  Und wenn ich jetzt z.B ein langen Text habe(label), das wird dich nicht mit mein button größer, bekommt man das durch autosize? Oder wie soll ich das machen?
Gruß,

Oma420
Geändert von oma420 am 15.10.08 um 16:46 Uhr
XION#10
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

15.10.2008, 17:18

@oma420
probier mal das hier und schau mal in den livedocs oder deiner Hilfe nach weiteren Eigenschaften der TextField Klasse.
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package klassen{
 
  import flash.display.Sprite;
  import flash.text.TextField;
 
  public class MyButton extends Sprite{
     
      public function MyButton( color:uint, label:String ):void
    {
          var txt:TextField = new TextField;
          txt.background = true;
          txt.backgroundColor = color;
          txt.autoSize ="center";
          txt.text = label;
          addChild( txt );
      }
  }
}




@redner
Sieht schön unübersichtlich aus so...Geht außerdem krachen, wenn man die gaze flash.display importieren möchte (aus was für Gründen auch immer)
Und wenn's nur das Codehighlightning durcheinanderbringt (wie man oben sieht), Button gehört dem ActionScript. Eigene Klassen - eigene Namen.
XION
Geändert von XION am 15.10.08 um 17:23 Uhr
rendner#11
Benutzerbild von rendner
Beiträge: 1016
Wohnort: derzeit München
Registriert: Jul 2004

15.10.2008, 17:31

Deine Einstellung teile ich überhaupt nicht, aber es kann ja jeder machen wie er es am besten findet.
rendner
omega psi#12
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

15.10.2008, 18:23

packages gibt es dafür, dass verschiedene Klassen auch den gleichen Namen haben können. Und Button ist weder reserviert noch patentiert...
Architectures - Refactoring - Prototyping - Coding - Training
XION#13
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

15.10.2008, 18:35

na dann am besten so, (besonders gut für Einsteiger geeignet):
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package klassen
{
   import flash.display.Button;
   
   
   public class Button extends Button
   {
      private var _button;
      public function Button(button:Button):Button{
         _button = button;
         
         var __button:Button = new Button;
         
         return(__button);
      
      }
}


int ist als Bezeichner übrigens auch nicht reserviert.
XION
Geändert von XION am 15.10.08 um 18:37 Uhr
rendner#14
Benutzerbild von rendner
Beiträge: 1016
Wohnort: derzeit München
Registriert: Jul 2004

15.10.2008, 18:41

Da ist aber mehr als ein Fehler drinn und "verarschen" kann ich mich auch selber, aber nun haste ja deinen Spaß gehabt ;(.
rendner
omega psi#15
Benutzerbild von omega psi
Beiträge: 791
Registriert: Apr 2004

15.10.2008, 18:43

Natürlich ist int nicht reserviert: int ist ein Datentyp.
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
package fs.display {

   import flash.display.Sprite;

   public class Sprite extends flash.display.Sprite {

      private var _newProperty:String;

      public function get newProperty():String {
         return this._newProperty;
      }

      public function set newProperty(value:String):void {
         if (this._newProperty == value) {
            return;
         }
         this._newProperty = value;
      }

      public function Sprite() {
         super();
      }
   }
}
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package {

   import flash.display.Sprite;
   import fs.display.Sprite;

   public class ButtonExample extends Sprite {

      public function ButtonExample() {
         super();
         var sprite:fs.display.Sprite = new fs.display.Sprite();
         sprite.newProperty = "Hello World";
         trace(sprite.newProperty);
      }
   }
}
Soviel zum Thema sicherer Umgang mit Namensräumen.
Architectures - Refactoring - Prototyping - Coding - Training
XION#16
Benutzerbild von XION
Beiträge: 61
Wohnort: Berlin
Registriert: Sep 2003

15.10.2008, 21:10

Ja hab meinen Spass gehabt. :) Entschuldige bitte.
Es ging mir auch nur um die Übersicht nicht um die Machbarkeit, gerade für Anfänger ist es verwirrend, da in Actionscript an Wörtern wie Button, MovieClip, Sprite usw. nicht nur irgendwie Klassen dranhängen, sondern diese ein etwas größeres Gewicht haben.

nochmal für den Thread Inseraten, falls das hier untergegangen sein sollte:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package klassen{

  import flash.display.Sprite;
  import flash.text.TextField;

  public class MyButton extends Sprite{
   
      public function MyButton( color:uint, label:String ):void
    {
          var txt:TextField = new TextField;
          txt.background = true;
          txt.backgroundColor = color;
          txt.autoSize ="center";
          txt.text = label;
          addChild( txt );
      }
  }
}
XION

AntwortenRegistrieren Seite1 2 3 4  

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