Zurück   Flashforum > Flash > Flash Einsteiger

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-12-2011, 13:00   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2011
Beiträge: 3
Exclamation Schnee geschwindigkeit verdoppelt sich

Hallo zusammen,

ich habe aus dem Internet ein Quellcode zum schnellfall gefunden.
Allerdings, verdoppelt sich die fallgeschwindigkeit, wenn er von vorner beginnt.
Dies wollte ich mit stop(); verhindern.
Wenn ich das mache, laufen die Frames aber nicht weiter, sondern bleibt beim 1. Bild stehen.

Wo liegt der Fehler?
Was kann ich dagegen machen?

Ich habe auch schon versucht, die Action in den ersten Frame zu legen und den hintergrund erst in Frame 2 einzubinden, aber er bleibt bei Frame 1 stehen.

Code:
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;

var breite = stage.width; // Breite der Bühne
var hoehe = stage.height; // Höhe der Bühne
var anzahl = 100; // Anzahl der Schneeflocken
var gravi = 1.5 // Gravitation
var mc:Array = new Array(); // Array in dem die Movieclips der Flocken sich befinden
var entfernung:Array = new Array(); // Entfernung der Flocke (1 - 10)
var groesse:Array = new Array(); // Groesse der Schneeflocke (1 -10)
var delay:uint = 20; // Verzögerung des Timers in Millisekunden
var repeat:uint = 0; // Wiederholungen des Timers (0 = Endlos)

var myTimer:Timer = new Timer(delay, repeat); // Ein Timer wird initialisiert

myTimer.addEventListener(TimerEvent.TIMER, FrauHolle); // Listeneer für Funktion FrauHolle aus sobalt der Timer gestartet ist.
myTimer.start(); // Timer wird gestartet

// Schneeflocken werden nun generiert...

for(var i=0;i<anzahl;i++) {
	mc[i] = new Flocke(); // neues Movieclip
	entfernung[i] = Math.random(); // Entfernung der Flocke wird per Zufall definiert
	groesse[i] = Math.random(); // auch die Größe wird per Zufall definiert
	mc[i].x = breite * Math.random(); // Flocken werden auf Breite der Bühne verteilt.
	mc[i].y = -10-hoehe * Math.random(); // Flocken werden überhalb der Bühne auf Höhe der Bühne verteilt (-10 damit keine am oberen Bühnenrand erscheinen)
	mc[i].width = mc[i].height = 5*(groesse[i]-entfernung[i]); // Flocke wird auf die Größe skaliert
	mc[i].alpha = 80 + 20 * entfernung[i]; // mit größerer Entfernung nimmt der Alpha-Wert ab (80 % - 100%)
	addChild(mc[i]); // und ab damit auf Position!!
}




function FrauHolle(e:TimerEvent):void {
	for (var s=0;s<anzahl;s++){ // alle Flocken werden durchlaufen
		mc[s].y += gravi-groesse[s]/2-entfernung[s]/2; // je größer und weiter weg desto langsamer fallen die Flocken
		mc[s].x = mc[s].x + Math.sin(mc[s].y/(hoehe/10))*((groesse[s]-entfernung[s])/2); // genauso verhält es sich mit dem Schwingen...
		if (mc[s].y > hoehe){ // Fällt die Flocke unten raus...
			mc[s].y = -10; // wird sie überhalb der Bühne plaziert...
			mc[s].x = breite * Math.random(); // und bekommt eine neue x-Position.
		}
	}
}

stop();
Swan ist offline   Mit Zitat antworten
Alt 01-12-2011, 13:18   #2 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
hi und willkommen im flashforum,
erklär das bitte mal genauer hier:
Zitat:
Allerdings, verdoppelt sich die fallgeschwindigkeit, wenn er von vorner beginnt.
ich hab den verdacht das du zwischen den frames wechselst und dann wieder auf dem frame mit dem schnee script landest?! wenn ja musst du vor dem verlassen des frames einfach nur den timer beenden/reseten: "myTimer".

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 01-12-2011, 13:49   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2011
Beiträge: 3
Ja, ich habe mehrere Bildübergänge.
Und wenn Durchlauf meines Banners zuende ist, beginnt er von vorne.
Und bei "neustart" fällt der Schnee jetzt viel schneller als vorher. Und im
dritten durchlauf noch viel schneller.

Kannst du mir das etwas genauer erklären?
Zitat:
wenn ja musst du vor dem verlassen des frames einfach nur den timer beenden/reseten: "myTimer"
Was und wie ich das machen muss?
Flash ist noch relativ neu für mich. Wäre super nett!!

Vielen Dank soweit
Swan ist offline   Mit Zitat antworten
Alt 01-12-2011, 14:03   #4 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
du sagst ja auch
PHP-Code:
myTimer.start(); 
so solltest du den timer auch stoppen:
PHP-Code:
myTimer.stop(); 
bzw besser noch prüfen ob es nicht schon einen aktiven timer gibt... sonst haste irgendwann X timer am laufen und dann passiert genau das was du beschrieben hast

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 01-12-2011, 14:08   #5 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
teste wirklich am besten obs schon einen timer gibt... nur wenn es noch keinen timer gibt wird einer erstellt und schon haste das problem nicht mehr. pack dazu einfach wie folgt eine if bedingung um deinen timer und gut ist:
PHP-Code:
if ( !myTimer ) {

    var 
myTimer:Timer = new Timer1)
        
myTimer.addEventListenerTimerEvent.TIMERFrauHolle);
        
myTimer.start();
    

viel spaß noch mit FrauHolle. function namen sollten übrigens immer mit einem kleinbuchstaben beginnen... also besser frauHolle. FrauHolle ist ja keine klasse, sondern eine function

cheers,
sal
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar ist offline   Mit Zitat antworten
Alt 01-12-2011, 15:19   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2011
Beiträge: 3
Danke
Swan ist offline   Mit Zitat antworten
Alt 01-12-2011, 15:42   #7 (permalink)
experience++;
 
Benutzerbild von salazar
 
Registriert seit: Jul 2002
Ort: Düsseldorf
Beiträge: 11.347
bitte
__________________
Bitte keine Flashfragen an mich schicken. Dafür ist ja das Forum da! Das betrifft auch Profilnachrichten.
Chuck Norris hat den Flash Player für alle mobilen Betriebssysteme!
salazar 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sound loop verdoppelt sich bei Wiederholung des Films LaMaMaN Flash Einsteiger 6 21-05-2008 13:51
funktion verdoppelt sich bei replay acdc33 ActionScript 1 2 01-12-2006 08:12
Sinus Kurve verdoppelt sich Benni@flash ActionScript 1 5 10-11-2004 20:08
Sound.getVolume verdoppelt sich L4M4R Softwarearchitektur und Entwurfsmuster 5 31-10-2004 16:31
sound verdoppelt sich beim export derMoritz Flash 4 und Flash 5 0 06-09-2003 18:02


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele