|
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 |
|
|
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 | |
|
|
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);
|
Gruß,
Oma420 |
|
|
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. |
|
|
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 | |
|
|
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 |
|
|
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 |
|
|
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
|
|
|
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 | |
|
|
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 | |
|
|
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
|
|
|
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 |
|
|
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 | |
|
|
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
|
|
|
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 |
|
|
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 |
|