Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-11-2005, 07:19   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 100
Bühne mit MC's befüllen

Hi,

ich befülle in einem Film die Bühne automatisch mit MC's, die dann auf die Mausbewegung hin sich perspektivisch verschieben. Klappt auch alles.

Bislang habe ich immer ein und denselben MC multipliziert. Nun möchte ich aber verschiedene Motive laden.

Ein Weg das zu tun, wäre meiner Meinung nach, dass der MC, der aud der Bühne platziert wird mehrere Frames enthält und immer, wenn diese Schleife durchgelaufen ist, der nächste Frame angeziegt wird. So könnte ich relativ einfach die Bühne mit verschiedenen Motiven befüllen.

Nachfolgend die Schleife:

Code:
for (i=0; i<items; i++) {
	this.attachMovie("dot", "dot"+i, i+1);
	var me = this["dot"+i];
	var r = 300;
	var ang = 2*Math.PI/items*i;
	me.x = cx+Math.cos(ang)*r;
	me.y = cy;
	me.z = cz+Math.sin(ang)*r;
	this["dot"+i].gotoAndStop(n+1);
}
Leider springt der MC nicht auf den nächsten Frame. Wie muss ich ih adressieren?
Code:
this["dot"+i].gotoAndStop(n+1);
...so ja wohl nicht, oder?

Der MC dot befindet sich auf _root.

Hat jemand die Lösung?
Danke!!
Seraphim ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:26   #2 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Trace dir mal in deiner schleife das "n", und guck ob es vorhanden ist, weil ohne n, kein hüpfer auf den entsprechenden frame
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 07-11-2005, 07:34   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 100
scherzkeks

naja, haääte ich mir schon auch selbst denken können, Danke!!
Seraphim ist offline   Mit Zitat antworten
Alt 07-11-2005, 08:00   #4 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 100
Anschlussfrage:


Die MC's werden ja mit diesem Script schön im Kreis angeordnet. Wie kann ich es so manipulieren, dass die MC's "hintereinander" also weiter hinten im Raum, angeordnet werden??
Seraphim ist offline   Mit Zitat antworten
Alt 07-11-2005, 08:06   #5 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Das geht nur über depth, da flash keine z achse besitzt. Sprich, du schiebst die tiefe des mc je nach bedarf eins zurück oder vor. die methoden deiner wahl lauten
PHP-Code:
var tl:MovieClip this;
tl.swapDepths(ziel)
tl.getDepth()
tl.getNextHighestDepth() 
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shorty (07-11-2005 um 08:09 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 08-11-2005, 08:10   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 100
danke, hat geklappt.

Das einzige, was jetzt noch verändert werden muss ist, dass die Abstände, in denen die MCs reingeladen werden, variieren sollen.

Code:
for (i=1; i<items; i++) {
	this.attachMovie("dot", "dot"+i, i+1);
	var me = this["dot"+i];
	var r = 300;
	
	me.x = cx+Math.cos(ang)*r;
	me.y = cy;
	me.z = cz+(i*(-300));
	this["dot"+i].gotoAndStop(i);
}
Der Teil

Code:
me.z = cz+(i*(-300));
bestimme ja, dass die MC's in einem Abstand von 300 hintereinander versetzt geladen werden.

Wie muss die Schleife aussehen, damit nur bei jedem fünften Durchlauf der Abstand 300 ist und sonst 150. (Ich brauche das ganz für einen Zeitstrahl und da soll jeder fünfte MC eine Dekade einleiten. Innerhalb der Jahrzehnte soll dann der Abstand kleiner sein.)

weiß jemand die Lösung??

Danke.
Seraphim ist offline   Mit Zitat antworten
Alt 08-11-2005, 12:15   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 100
weiß keiner was?
Seraphim ist offline   Mit Zitat antworten
Alt 08-11-2005, 12:28   #8 (permalink)
flashlerner
 
Benutzerbild von Apollo102
 
Registriert seit: May 2004
Beiträge: 74
Du brauchst eine Variable die bei jedem Durchlauf der for-Schleife um 1 erhöht wird. D.h. sie wird vor der for-Schleife deklariert und auf einen Startwert von 1 gesetzt.

Mit einer if Abfrage prüfst du innerhalb der for-Schleife ob die Anzahl Durchläufe < 5 ist. Wenn das der Fall ist dann benutzt du einen bestimmte Formel z.B.:

PHP-Code:
me.cz+(i*(-150)); 
Im Fall von < 5 Fall erhöhst du auch die Durchlaufvariable um +1 (im gleichen Teil von if)

Ist das nicht der Fall (also < 5), dann verwendest du:

PHP-Code:
me.cz+(i*(-300)); 
Für diesen Fall setzt du auch deine Durchlaufvariable auf 1 zurück.
Apollo102 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 23:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele