Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-11-2005, 14:11   #1 (permalink)
Flash-Noob
 
Benutzerbild von deskounlmtd
 
Registriert seit: Aug 2003
Beiträge: 594
Question 14 MCs, die sich per AS zu einer bestimmten Positon bewegen sollen!

Hi Leutz,
ich habe in meiner FLA 14 Ebenen, in denen jeweils ein MC liegt.
Diese habe ich links angeordnet zunächst. (Liegen alle auf X-95.0 Y10.0)

Nun sollen die MCs automatisch eine bestimmte Position einnehmen, (zunächst) mit einer einfachen, geraden Bewegung*.
thumb1 soll auf Position X5.0 Y10.0 gehen, thumb2 auf X75.0 Y10.0, thumb3 auf X145.0 Y10.0 usw. ...
Also der X-Wert wird von MC zu MC um 70 erhöht.

Wie gehe ich im AS-Dschungel vor?

*wenn das steht, würde ich aus der geraden Bewegung gerne eine abbremsende machen

edit: Natürlich könnte ich das ganz einfach mit einem Bewegungstween machen, aber ich würde das diesmal saugerne mit AS machen. Sonst bleibe ich ja ewig bei Bewegungstweens. T_T

Geändert von deskounlmtd (02-11-2005 um 14:16 Uhr)
deskounlmtd ist offline   Mit Zitat antworten
Alt 02-11-2005, 14:26   #2 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
nun, eine bewegung machst du am besten mit einem oEF-event, einem onEnterFrame:

ActionScript:
  1. var ziel:Number = 100;
  2. dein_mc.onEnterFrame = function () {
  3. this._x += 1;
  4. if (this._x >= ziel) delete this.onEnterFrame;
  5. }

eine abbremsende bewgung geht mit diesem kleinen trick:

ActionScript:
  1. var ziel = 100;
  2. dein_mc.onEnterFrame = function () {
  3. var fac:Number = Math.ceil((ziel - this._x) / 6);
  4. this._x += fac;
  5. if (this._x == ziel) delete this.onEnterFrame;
  6. }

das kannst du in einer for-schleife auch auf 14 mc's anwenden, seien diese hier einmal von dein_mc0 bis dein_mc13 benannt (bei einem solchen vorhaben immer von anfang an mit der null als ersten index anfangen!):

ActionScript:
  1. var anzahl:Number = 14;
  2. for (var i = 0; i < anzahl; i++) {
  3. var dein_mc:MovieClip = _root['dein_mc'+i];
  4. var ziel:Number = 5 + i*70;
  5. dein_mc.onEnterFrame = function () {
  6. //...der code von weiter oben
  7. }
  8. }

[den code habe ich mit absicht in [as] geschrieben, damit man ihn - hoffentlich bald wieder - dann in der richtigen formatierung lesen kann, für jetzt erstmal in flash einfügen, um ihn zu lesen.]

in dem stil würde ich das machen.

gruß janosch

Geändert von janoshnosh (02-11-2005 um 14:27 Uhr)
janoshnosh ist offline   Mit Zitat antworten
Alt 02-11-2005, 14:27   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2003
Ort: BW
Beiträge: 56
Hi!

Also ich würde es über die onClipEvent(enterFrame) Methode der MCs machen.
Da kannst ja dann einfach einzeln die _x und _y werte setzen. Musst halt innendrin immer wieder abfragen, wie die "ist-position" des MCs und die "soll-position" ist. und dann eben so lange erhöhen (oder verringern), bis sie gleich sind.

ungefähr so:
Code:
onClipEvent(enterFrame)
{
     if(myMc._x<sollPosX)
     {
           myMc._x++;
     }
     if(myMc._x>sollPosX)
     {
           myMc._x--;
     }
     if(myMc._y<sollPosY)
     {
           myMc._y++;
     }
     if(myMc._y>sollPosY)
     {
           myMc._y--;
     }
}
usw...
wäre eine Lösung, sicher nicht die schönste, aber die funktioniert.




@janosch: Sorry, wollte dir nicht dazwischen pfuschen, haben wohl gleichzeitig geantwortet.
Deine Variante ist defnitiv die sauberere. =)
__________________
Def. "Team" - -=Toll Ein Anderer Machts=-

Geändert von cirox (02-11-2005 um 14:29 Uhr)
cirox ist offline   Mit Zitat antworten
Alt 02-11-2005, 14:42   #4 (permalink)
Flash-Noob
 
Benutzerbild von deskounlmtd
 
Registriert seit: Aug 2003
Beiträge: 594
Egal, dann kriege ich halt 2 Versionen zu sehen - umso besser!
Danke erstmal Jungs!
deskounlmtd ist offline   Mit Zitat antworten
Alt 02-11-2005, 14:46   #5 (permalink)
:Void
 
Benutzerbild von janoshnosh
 
Registriert seit: Jun 2005
Ort: börlin
Beiträge: 931
@cirox
keine sorge, zwei lösungsansätze sind immer besser als einer, außer es sind die gleichen
gruß janosch
janoshnosh ist offline   Mit Zitat antworten
Alt 02-11-2005, 15:55   #6 (permalink)
Flash-Noob
 
Benutzerbild von deskounlmtd
 
Registriert seit: Aug 2003
Beiträge: 594
Ok, wir (99,9% janoshnosh, 0,1% ich) haben es folgendermaßen gemacht:

PHP-Code:
var anzahl 14;    
for (var 
0anzahli++) {    
     var 
thumb _root['thumb'+i];    
     var 
tmpziel i*70;   
     
thumb.ziel tmpziel;  
     
thumb.id i;  
     
thumb.onEnterFrame = function () {  
          var 
fac Math.ceil((this.ziel this._x) / 6);    
          
this._x += fac;  
          if (
this._x == this.ziel) {  
               
delete this.onEnterFrame;    
               if (
this.id == 13gotoAndStop(2);  
          }  
     }    
}
stop(); 
- steht im ersten Frame. In dem habe ich aus den Bitmaps nochmal MCs gemacht, diesmal ohne Animation. Instanzen von thumb0 bis thumb13.
(Jetzt hat jANosh mir verklickert, dass ich gar keine 2 Frames brauche, das wird dann noch geändert )
Danke an dieser Stelle nochmal an jANosh und seine selbstlose Hilfe ;-P

FLA hier downloaden!

Geändert von deskounlmtd (02-11-2005 um 16:09 Uhr)
deskounlmtd 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 19:28 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele