Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 21-12-2004, 22:09   #1 (permalink)
cbt
nichts
 
Registriert seit: Dec 2004
Ort: Berlin
Beiträge: 25
Welcher Script ist besser???

Ich habe eine Frage: ist es immer gut, wenn man code nur in der Timeline von _root schreiben??

Ich habe 2 Scripts (selbe Funktion aber unterschiedliche Schreibeweise) :
-einer wird nur in der timeline von _root schreiben.
-der andere wird einen Teil in der timline von movie "mc" und einen Teil in time von _root

Ich würde gern wissen, welcher ist besser für den Computer??:
In der Bibliothek haben wir ein movieclip mit der linkage: "mc"

1.Script (in der timeline von _root):
Code:
for(i=0; i<10; i++){
 
    _root.attachMovie("mc","mc"+i,i)
    _root.["mc"+i]._x=random(550);

    _root["mc"+i].onEnterFrame=function(){
          //do something 

         .....
    }
}
2.Script:

ein Teil in der timeline von movie "mc":

Code:
this.onEnterFrame=function(){
     //do something wie oben 
     ....
}
Und der andere Teil in der timeline von _root:
Code:
for(i=0; i<10; i++){
    _root.attachMovie("mc","mc"+i,i)
    _root.["mc"+i]._x=random(550);
}
Ich glaube, der 2.Script ist besser, oder??
Denn der Computer muss weniger Abeit machen.

Beim 1.Script muss der Computer für jeder einzelne Instance von mc ein onEnterFrame function bestimmen. Also:
mc0.onEnterFrame=function(){...};
mc1.onEnterFrame=function(){...};
...

Wie glauben Sie??
Ich wäre sehr dankbar für Ihre Antworten

gruss,
cbt
cbt ist offline   Mit Zitat antworten
Alt 21-12-2004, 22:19   #2 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
hi,
wir können uns hier auf ein perdu einigen
Die 2. scripts geben sich im grund nichts.
klar hast du wenn du zB 10 enterFrame evnts manuell in die mcs einfügst dem movie etwas arbeit abgenommen aber diese ms an rechenzeit is völlig irrelevant wenn es nicht um 10000 objekte geht.

ich finde das 1.script angenehmer, schließlich muß ich dort weniger tun.


besten grüße
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 21-12-2004, 22:34   #3 (permalink)
cbt
nichts
 
Registriert seit: Dec 2004
Ort: Berlin
Beiträge: 25
Zitat:
Zitat von Deluxe
hi,
Die 2. scripts geben sich im grund nichts.
klar hast du wenn du zB 10 enterFrame evnts manuell in die mcs einfügst dem movie etwas arbeit abgenommen aber diese ms an rechenzeit is völlig irrelevant wenn es nicht um 10000 objekte geht.
naja, wenn ich sehr viele mcs erstellen möchte, heißt das, dass der 2.Script besser ist ???
Und außerdem, wenn in der onEnterFrame function () der Flash sehr viel Arbeit machen muss:
Also:

Code:
onEnterFrame=function(){
        //viel viel Arbeit machen muss
}
Dann ist der Script 2 viel besser oder??? Denn die instance mcs brauchen nur den Script des MovieClips "mc" in der Bibliothek übernehmen (inheritance), ähnlich wie wir ein Class für movie "mc" erstellen, oder??

auch besten Grüße ,

cbt

Geändert von cbt (21-12-2004 um 22:35 Uhr) Grund: Rechtschreibung korrigieren :P
cbt ist offline   Mit Zitat antworten
Alt 22-12-2004, 02:27   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
da in beiden fällen jedes mc ein onEnterFrame bekommt sind deine "beiden" lösungen vollkommen identisch.

die testwert-unterschiede sind so gering, dass sie kaum auf die unterschiedlichen arbeitsmethoden bezogen werden können.

somit ist eher die frage, welche methode eleganter und wartungsfreundlicher ist.

bei variante 1 existierten je mc eine neue function, was speichertechnisch sehr ungeschickt ist.
bei variante 2 und 3 sind die listings verstreut und man muss sie für änderungen erst suchen.
bei variante 4 sind die fehler von 1 bis 3 nicht gegeben. ist übersichtlich und speicheroptimiert.
variante 5 ist eleganter als 4. die vorteile von classen kommen bei diesem einfachen beispiel natürlich noch nicht zur geltung.
variante 6 fällt etwas aus dem rahmen, da es hier keine x onEnterFrame's gibt, sondern tatsächlich nur eins. ein vorteil ist (zumindestens hier) nicht zu erkennen. nachteilig wird es, wenn die schleife zu lange dauert, dann "mäckert" flash.

fazit: variante 4 bzw classen sind zu bevorzugen.
ActionScript:
  1. var gTestAnz = 40;
  2. var gTestDauer = 30*1000; // 30 sekunden
  3. //
  4. var sum = 0;
  5. var iv = setInterval(fStopp, gTestDauer);
  6. function fStopp() {
  7.     clearInterval(_root.iv);
  8.     trace(_root.sum);
  9. }
  10. // variante 1 == 36000
  11. for (i=0; i<gTestAnz; i++) {
  12.     mc = _root.attachMovie("mc", "mc"+i, i);
  13.     mc._x = Math.random()*550;
  14.     mc._y = Math.random()*350;
  15.     mc.onEnterFrame = function() {
  16.         _root.sum++;
  17.         this._x++;
  18.     };
  19. }
  20. /*
  21. //  variante 2 == 35880 (programm in mc2)
  22. //  variante 3 == 36000 (programm in mc3)
  23. for (i=0; i<gTestAnz; i++) {
  24.     mc = _root.attachMovie("mc3", "mc"+i, i);
  25.     mc._x = Math.random()*550;
  26.     mc._y = Math.random()*350;
  27. }
  28. */
  29. /*
  30. // variante 4 == 36040
  31. function fMC() {
  32.     _root.sum++;
  33.     this._x++;
  34. }
  35. for (i=0; i<gTestAnz; i++) {
  36.     mc = _root.attachMovie("mc", "mc"+i, i);
  37.     mc._x = Math.random()*550;
  38.     mc._y = Math.random()*350;
  39.     mc.onEnterFrame = fMC;
  40. }
  41. */
  42. /*
  43. // variante 5 == 35840
  44. function MeMC_Class() {}
  45. MeMC_Class.prototype = new MovieClip();
  46. MeMC_Class.prototype.onEnterFrame = function() {
  47.     _root.sum++;
  48.     this._x++;
  49. };
  50. Object.registerClass("mc", MeMC_Class);
  51. //
  52. for (i=0; i<gTestAnz; i++) {
  53.     mc = _root.attachMovie("mc", "mc"+i, i);
  54.     mc._x = Math.random()*550;
  55.     mc._y = Math.random()*350;
  56. }
  57. */
  58. /*
  59. // variante 6 == 35920
  60. var gAry = new Array();
  61. for (i=0; i<gTestAnz; i++) {
  62.     mc = _root.attachMovie("mc", "mc"+i, i);
  63.     mc._x = Math.random()*550;
  64.     mc._y = Math.random()*350;
  65.     gAry[i] = mc;
  66. }
  67. _root.onEnterFrame = function() {
  68.     for (i in gAry) {
  69.         gAry[i]._x++;
  70.         _root.sum++;
  71.     }
  72. };
  73. */

anhang: flash6
Angehängte Dateien
Dateityp: zip test.zip (4,6 KB, 1x aufgerufen)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (22-12-2004 um 02:35 Uhr)
hgseib 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:23 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele