Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-02-2006, 14:53   #1 (permalink)
C0FFEE
Gast
 
Beiträge: n/a
Versuche eigene MC-Eigenschaft aus Klassenmethode abzuleiten - aber wie?

Hallo Ihrs..

Bin mal wieder

Folgendes Problem:

Code:
    import flash.geom.ColorTransform; import flash.geom.Transform; class Cols {     public function _color () {}     static function get _color ():Number     {         var tf:Transform = new Transform(this);         var coltf:ColorTransform = new ColorTransform();         return coltf.rgb     }     static function set _color (c:Number)     {         var tf:Transform = new Transform(this);         var coltf:ColorTransform = new ColorTransform();         coltf.rgb = c;         tf.colorTransform = coltf;     } }

...nun versuche ich im Scope einer anderen Klasse sowas wie:

Code:
    class Whereever {     var mc:MovieClip = _root.createEmptyMovieClip("jojoo",0);     mc.__proto__._color = Cols._color; }

Das Grundproblem liegt schon darin, dass mein Compiler gar nicht erst loslegt, weil ihm "this" in statischen Funktionen nicht gefallen...

Wie stelle ich es nur an, meinem MovieClip diese Eigenschaft aus der Methode _color der Klasse Cols zu verpassen??

lg

Geändert von C0FFEE (04-02-2006 um 14:55 Uhr)
  Mit Zitat antworten
Alt 04-02-2006, 15:44   #2 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
watn das für murks. da is der sinn von statischen methoden voll verpeilt
mach die methoden (alle) nicht statisch und dann kannst folgendes schreiben:
mc.__proto__= new Cols();
mc.methodeAusDerColsKlasse();

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 15:55   #3 (permalink)
C0FFEE
Gast
 
Beiträge: n/a


wenn ich die Methoden alle nicht-statisch mache, heißt es:

error - void should be number

in Resource Cols.as Zeile 5
  Mit Zitat antworten
Alt 04-02-2006, 16:19   #4 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
deinem geposteten code nach, haste funktionen die "get _color" heißen, also get ist ein schlüsselwort wenn es ohne vor und nachfolgende zeichen steht. schreib dies zusammen "getColor".
dann ist der rückgabetyp dieser funktion "Number"... und coltf.rgb muss nicht unbedingt Number sein, denkt sich der compiler. schreib das so:
PHP-Code:
return Number(coltf.rgb); 
gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 16:41   #5 (permalink)
C0FFEE
Gast
 
Beiträge: n/a
Mh...vielleicht verstehst Du mein Vorhaben nicht so ganz...ich wollte dem betreffenden MovieClip ja keine neuen Methoden an die Hand geben, sondern Eigenschaften, die ich dann einfach per Zuweisung einstellen kann...

Jetzt habe ich das so gemacht...:
Code:
    import flash.geom.ColorTransform; import flash.geom.Transform; dynamic class Prototypes.Colorprops extends MovieClip {         function get _color ():Number     {         var tf:Transform = new Transform(this);         var coltf:ColorTransform = new ColorTransform();         return coltf.rgb     }     function set _color (c):Void     {         var tf:Transform = new Transform(this);         var coltf:ColorTransform = new ColorTransform();         coltf.rgb = c;         tf.colorTransform = coltf;     } }


vererbt wird dann an die betreffenden MCs über...

Code:
    meinMovieClip.__proto__ = new Prototypes.Colorprops(); // und dann.. meinMovieClip._color = 0xFF0000;

Das lustige ist jetzt...Der Setter funktioniert einwandfrei..der Getter nicht.



Hätte ich gewußt, dass AS2 lernen so Zeitaufwändig ist, hätte ich mir vorher Urlaub genommen..

lg
  Mit Zitat antworten
Alt 04-02-2006, 17:58   #6 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
die geschichte mit __proto__ ist übrigens AS1. jedenfalls kenn ich die klasse ColorTransform nicht. ich vermute jedoch, dass du nach derer erzeugung keine gesetzte eigenschaften wie "coltf.rgb" haben dürftest. wie wärs einfach, wenn du in der set methode die variable coltf als member speicherst die in der get sofort über
PHP-Code:
function get _color ():Number {
return 
coltf.rgb

ausgibst

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!

Geändert von artjom (04-02-2006 um 18:03 Uhr)
artjom ist offline   Mit Zitat antworten
Alt 04-02-2006, 21:10   #7 (permalink)
C0FFEE
Gast
 
Beiträge: n/a
Gute Idee eigentlich..

ähem..doch nochmal zur Sicherheit: meinst Du ich sollte den Wert dann im MovieClip speichern, oder als Membervariable in der Klasse?

ColorTransform ist eine neue Klasse für Farbtransformationen. Seit Flash 8 ist das gute alte Color-Object deprecated.

kukksu: http://livedocs.macromedia.com/flash.../00002083.html

lg
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2014 Marc Thiele