Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-08-2007, 15:56   #1 (permalink)
Rhett Butler
 
Benutzerbild von RhettButler
 
Registriert seit: Nov 2006
Beiträge: 522
Scho wida wos nächs (schon wieder etwas neues)...

Hallo!


Ich dupliziere einen MovieClip mit Hilfe einer for-Schleife (weil ich eben mehrere Duplizierungen benötige):
ActionScript:
  1. for(i=1, ii=21; i<=2, ii<=100;i++, ii+21)
  2.                 {
  3.                 duplicateMovieClip("span", "span"+i, _root.getNextHighestDepth());
  4.             ??????._y += 21;
  5.                 }
.

Wie ist es jetzt möglich, dass ich alle fortlaufenden "span"+i MovieClips einzeln mit einer for-Schleife anspreche? Muss ich dazu ein Objekt erstellen und die "span"+i MovieClips dort abspeichern? Oder funktioniert das grundsätzlich anders?

Danke!


Christoph
RhettButler ist offline   Mit Zitat antworten
Alt 14-08-2007, 16:00   #2 (permalink)
voidboy
 
Benutzerbild von rendner[i]
 
Registriert seit: Sep 2004
Ort: München
Beiträge: 5.588
Flashhilfe, da steht eigentlich fast alles!

duplicateMovieClip gibt dir eine Referenz auf den duplizierten MovieClip zurück, und die kannst du in einer Variable speichern und so den MovieClip auch in der Schleife ansprechen.
__________________
ERROR: Signature is too large
rendner[i] ist offline   Mit Zitat antworten
Alt 14-08-2007, 16:03   #3 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Falsches Forum?
ActionScript:
  1. var array:Array = new Array();
  2. for (var i:Number = 0; i<100; i++) {
  3.     this.array[i] = this.attachMovie("Span_MC", "span"+i, this.getNextHighestDepth());
  4. }
  5. for (var j:Number = 0; i<this.array.length; j++) {
  6.     if (j>0) {
  7.         this.array[j].y = array[j-1]._y + array[j-1]._height;
  8.     }
  9. }
Ich verzichte immer auf duplicateMovieClip(), sollte aber genauso gehen, wenn duplicatMovieClip() auch einen Rückgabewert hat.. Es geht auch mit einer for (... in ...) {} In AS3 geht es aber auch mit numChildren und getChildAt().
Omega Psi ist offline   Mit Zitat antworten
Alt 14-08-2007, 16:03   #4 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
wenn du deine duplizierten clips noch innerhalb derselben for-schleife ansprechen möchtest - dann so:
Code:
for(i=1, ii=21; i<=2, ii<=100;i++, ii+21)  {
     duplicateMovieClip("span", "span"+i, _root.getNextHighestDepth());
     this["span"+i]._y += 21;
}
...aber - das ist ja hier der as3-bereich, und...
da gibt´s kein duplicateMovieClip mehr - somit solltest
Du besser bei AS1 posten...

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 14-08-2007, 21:41   #5 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
verrschobbe
michael ist offline   Mit Zitat antworten
Alt 16-08-2007, 08:50   #6 (permalink)
Rhett Butler
 
Benutzerbild von RhettButler
 
Registriert seit: Nov 2006
Beiträge: 522
Zitat:
Zitat von pwdVergesser Beitrag anzeigen
wenn du deine duplizierten clips noch innerhalb derselben for-schleife ansprechen möchtest - dann so:
Code:
for(i=1, ii=21; i<=2, ii<=100;i++, ii+21)  {
     duplicateMovieClip("span", "span"+i, _root.getNextHighestDepth());
     this["span"+i]._y += 21;
}
...aber - das ist ja hier der as3-bereich, und...
da gibt´s kein duplicateMovieClip mehr - somit solltest
Du besser bei AS1 posten...

pwd
1. Danke für eure sehr nützlichen Antworten!

2. Richtig! Irrtümlicher Weiße habe ich in AS3 statt AS2 gepostet.

3. @pwdVergesser: Das mit this["span"+i] ist genau das was funktioniert und was ich gesucht habe. Daraus ergibt sich bei mir noch eine weitere Frage bitte: Kann ich diese Schreibweise auch bei Funktionen benutzen bzw. welche andere Schreibweise währe empfehlenswert?

ActionScript:
  1. import mx.transitions.Tween;
  2. import mx.transitions.easing.*;
  3. xScaleT.onMotionFinished = function()
  4.    {
  5.    this["span"+i].yoyo();
  6.    };   
  7. xPosT.onMotionFinished = function()
  8.    {
  9.    this["span"+i].continueTo(Stage.width / 2, 3);
  10.    };
  11. xPosT = new Tween(this("span"+i), "_y", Elastic.easeOut, 64, speicher, 2, true);
  12. speicher += 21;

Bei der Zuweisung von xPosT = new Tween ignoriert Flash mir nämlich diese Schreibweise.

Danke!


Christoph
RhettButler ist offline   Mit Zitat antworten
Alt 16-08-2007, 08:56   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Ich würde dir empfehlen die Referenzen in einem Array zu speichern und die MovieClips dort anzusprechen.
Omega Psi ist offline   Mit Zitat antworten
Alt 16-08-2007, 09:10   #8 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
Code:
var deinArr = new Array();

for(i=1, ii=21; i<=2, ii<=100;i++, ii+21)  {
     duplicateMovieClip("span", "span"+i, _root.getNextHighestDepth());
     this["span"+i]._y += 21;

     deinArr.push( this["span"+i] );
}


for ( var i=0; i < deinArr.length; i++ ) {
       
       clip = deinArr[i];

       xPosT = new Tween(clip, "_y", Elastic.easeOut, 64, speicher, 2,true);
}
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 16-08-2007, 10:01   #9 (permalink)
Rhett Butler
 
Benutzerbild von RhettButler
 
Registriert seit: Nov 2006
Beiträge: 522
Hallo!

Danke!!!

Ich hab jetzt was rausgefunden! Teilweise funktioniert mein Beispiel, genauso wie es sein soll.

Paradoxer Weiße ist das Script echt unlogisch und kann gar nicht ausgebessert werden.

Dafür benötige ich jetzt keine Hilfe. Ich wollte es nur mal für euch posten, damit Ihr sehen könnt, wie unlogisch auf einmal ActionScript werden kann (Anhang).


Christoph


PS: Danke nochmal!
Angehängte Dateien
Dateityp: rar tweenComplete.rar (5,3 KB, 2x aufgerufen)
RhettButler ist offline   Mit Zitat antworten
Alt 16-08-2007, 12:52   #10 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.138
Ja, das war echt komisch: imports nicht irgendwo in den Code stecken...
ActionScript:
  1. import mx.transitions.Tween;
  2. import mx.transitions.easing.*;
  3. var array:Array = new Array();
  4. for (i=1; i<=6; i++) {
  5.     this.array[i] = this.attachMovie("kText", "kText"+i, this.getNextHighestDepth());
  6.     if (i>0) {
  7.         this.array[i]._y = this.array[i-1]._y+this.array[i-1]._height;
  8.     }
  9.     var xScaleT:Tween = new Tween(this.array[i], "_rotation", Elastic.easeOut, 0, 360, 3, true);
  10.     var xPosT:Tween = new Tween(this.array[i], "_x", Bounce.easeOut, 0, Stage.width, 3, true);
  11.     xScaleT.onMotionFinished = function() {
  12.         this.yoyo();
  13.     };
  14.     xPosT.onMotionFinished = function() {
  15.         this.continueTo(Stage.width/2, 3);
  16.     };
  17.     yPosT.onMotionFinished = function() {
  18.         this.continueTo(Stage.width/2, 3);
  19.     };
  20. }
Das ist die Array-Variante. Das Symbol von der Bühne weg und Export für ActionScript anklicken.
Omega Psi 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 04:22 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele