Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2005, 11:36   #1 (permalink)
Wann ist endlich Sommer
 
Benutzerbild von cornholio
 
Registriert seit: Oct 2002
Ort: zone
Beiträge: 291
Unhappy ASnative auf Objekten

Hi Leute,

hab eine Frage zu ASnative. In den bisher von mir in diesem Forum gefundenen Beispielen wurde ASnative immer schön als einzelne Funktion benutzt, um meinetwegen irgendwelche Mausbuttons abzufragen:

PHP-Code:
    Mouse.isLeftMouseDown=function () {
        return 
ASNative(800,2)(1);
    } 
Nun gibt es aber auch Funktionen für Movieclips, da hab ich folgendes gefunden:

Code:
ASnative(900,0) | method | [MovieClip].attachMovie
Meine Frage: wie mache ich der Funktion klar, welchen [MovieClip] ich meine?

viele Grüße & Danke
c
__________________
Hang the DJ!
cornholio ist offline   Mit Zitat antworten
Alt 27-01-2005, 13:58   #2 (permalink)
Wann ist endlich Sommer
 
Benutzerbild von cornholio
 
Registriert seit: Oct 2002
Ort: zone
Beiträge: 291
Interessant wäre hierbei noch die Frage, ob diese Art der Funktionen gegenüber den bekannten Funktionen im direkten Aufruf überhaupt Geschwindigkeitsvorteile bringen. Auch dazu habe ich nix finden können.

Grüße
c.
__________________
Hang the DJ!
cornholio ist offline   Mit Zitat antworten
Alt 27-01-2005, 22:11   #3 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
das mit ASnative hat folgender vorteil.
wenn du eine feste methode z.bsp. überschreiben möchtest, dann willst du in der regel ja dennoch die funktionalität der 'flashinternen' methode beibehalten.
diese geht mit dem einsatz von ASnative recht gut zu bewerkstelligen.

als bsp mal dein attachMovie, der ja im original 3 bzw. 4 parameter hat.
id-name, neuer name, tiefe, [i{initialisierungsobjekt}]
hier hänge ich nun noch einen weiteren parameter mit an

ActionScript:
  1. var att = ASnative(900, 0); // attachMovie
  2.  
  3. MovieClip.prototype.attachMovie(id, newName, depth, probs, args){
  4.             trace('hey..zunächst beinmal möchte ich noch was tracen, nämlich '+args);
  5.             if(arguments[3]== null) this.att(id, newName, depth);
  6.             else this.att(id, newName, depth, probs);
  7. }

bzw. du nutzt es um kombinationen zu erstellen aus verschiedenen methoden...

der verweis auf die tabellenzelle 900, 0 beinhaltet bereits, dass es sich um eine methode handelt und keien losgelöste funktion...

beantwortet das deine frage?

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 28-01-2005, 13:51   #4 (permalink)
Wann ist endlich Sommer
 
Benutzerbild von cornholio
 
Registriert seit: Oct 2002
Ort: zone
Beiträge: 291
Vielen Dank!

Dein schickes Beispiel beantwortet zunächst die für mich wichtige Frage, wie man ASnative-Funktionen als Objekt-Methoden einsetzt. Das mit dem Geschwindigkeitsvorteil kann ich ja selber mal rausfinden, wobei ich mir da jetzt nix bewegendes erhoffe.

Zitat:
der verweis auf die tabellenzelle 900, 0 beinhaltet bereits, dass es sich um eine methode handelt und keien losgelöste funktion...
Schon, nur war mir eben nicht klar, wie ich der Funktionen eine MC-Instanz verpasse, doch nun bin ich schlauer.

// edit
es bringt doch was:
PHP-Code:
var max 5000;
var 
stime = new Date().getTime();
// bringt 20% weniger verbrauchte zeit
_root.attachMovie ASnative(900,0);
// bringt nix
// MovieClip.prototype.attachMovie = ASnative(900,0);
for (var i=0i<maxi++) {
    var 
Math.floor(i/50)*10;
    var 
Math.floor(i%50)*4;
    var 
mc _root.attachMovie("testSymbol""t"+ii);
    
mc._x x;
    
mc._y y;
}
trace("took "+(new Date().getTime() - stime)+" ms."); 
// end edit
viele Grüße
c.
__________________
Hang the DJ!

Geändert von cornholio (28-01-2005 um 14:14 Uhr)
cornholio ist offline   Mit Zitat antworten
Alt 28-01-2005, 14:39   #5 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ja ASnative ist schon schneller...( hatt ich vergeesen zu sagen..)



greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 28-01-2005, 14:50   #6 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Noe, ist nicht schneller.
Das was die Geschwindigkeit bringt, ist dass cornholio die Methode in der Instanz statt im prototype unterbringt.

ActionScript:
  1. var max = 5000;
  2. var stime = getTimer();
  3. // bringt 20% weniger verbrauchte zeit
  4. //_root.attachMovie = ASnative(900,0);
  5. // bringt ebenfalls 20% (Methode aus prototype in Instanz kopieren)
  6. _root.attachMovie = _root.attachMovie;
  7. // bringt nix (weil es das gleiche, wie das Original ist)
  8. // MovieClip.prototype.attachMovie = ASnative(900,0);
  9. for (var i=0; i<max; i++) {
  10.     var x = Math.floor(i/50)*10;
  11.     var y = Math.floor(i%50)*4;
  12.     var mc = _root.attachMovie("TestSymbol", "t"+i, i);
  13.     mc._x = x;
  14.     mc._y = y;
  15. }
  16. trace("took "+(getTimer() - stime)+" ms.");

mfg. r.

Geändert von bokel (28-01-2005 um 14:51 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 29-01-2005, 04:10   #7 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
ja das ist richtig ralf...


greetz

kelor
kelor ist offline   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 13:31 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele