Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX 2004

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 14-11-2007, 13:57   #1 (permalink)
INSERT COIN
 
Benutzerbild von pacman.hgw
 
Registriert seit: May 2003
Ort: Hansestadt Greifswald
Beiträge: 1.717
Spiel berechnet Zeit nicht richtig!?

Hallo Leute,

ich habe da son klitze kleines "baller" spiel programmiert. Nun gibt es 2 Level. Im 2. is einfach die geschwindigkeit der sich bewegenden ziele höher. wenn man alles abgeschossen hat bekommt man die Restzeit, Punktestand und die benötigte Zeit angezeigt. Nur bei der benötigten Zeit rechnet er falsch. Ich weiß nur nicht wieso. Hoffe einer sieht den Fehler.

Code:
import mx.transitions.Tween;
import mx.transitions.easing.*;
// ParseFloat
function fParseFloat(_str) {
	for (var i = 0; i<_str.length; i++) {
		var char = _str.charAt(i);
		if (char>="0" && char<="9" || char == ".") {
			return parseFloat(_str.substr(i));
		}
	}
	return 0;
}
//Fadenkreuz
fadenkreuz_mc.onEnterFrame = function() {
	Mouse.hide();
	this._x += int((-this._width/2)+this._xmouse)/1;
	this._y += int((-this._height/2)+this._ymouse)/1;
};
//Start Countdown
stopuhr1();
//Hittest
var kreise1:Array = new Array(kreis1, kreis2, kreis3, kreis4, kreis5, kreis6, kreis7, kreis8);
var kreise2:Array = new Array(kreis9, kreis10, kreis11, kreis12, kreis13, kreis14, kreis15, kreis16);
for (var i = 0; i<kreise1.length; i++) {
	var mc1:MovieClip = kreise1[i];
	mc1.ID = i;
	var count = 0;
	mc1.onPress = function() {
		if (this.hitTest(_root._xmouse, _root._ymouse)) {
			new Tween(this, "_alpha", 100, 0, 1, false);
			new Tween(this, "_y", Strong.easeInOut, 0, 0, 17, true);
			new Tween(this, "_x", Strong.easeInOut, 0, 0, 17, true);
			break;
			count++;
		}
		if (count == 8) {
			clearInterval(iv);
			var rechnen:Number = fParseFloat(countdown.text);
			y = 20;
			var x = y-rechnen;
			_root.zeit.text = "Benötigte Zeit [Level1]: "+x+" Sekunden";			
                         mc1._visible = false;
			kreise();
		}
		_root.punkte.text = "Punktestand: "+count+"/16";
	};
}
//kreise2 unsichtbar
for (var e = 0; e<kreise2.length; e++) {
	var mc_kreis:MovieClip = kreise2[e];
	mc_kreis._visible = false;
}
function kreise() {
	for (var i = 0; i<kreise2.length; i++) {
		var mc2:MovieClip = kreise2[i];
		mc2._visible = true;
		mc2.ID = i;
		clearInterval(iv);
		stopuhr2();
		mc2.onPress = function() {
			if (this.hitTest(_root._xmouse, _root._ymouse)) {
				new Tween(this, "_alpha", 100, 0, 1, false);
				new Tween(this, "_y", Strong.easeInOut, 0, 0, 17, true);
				new Tween(this, "_x", Strong.easeInOut, 0, 0, 17, true);
				break;
				count++;
			}
			if (count == 16) {
				clearInterval(iv);
				var rechnen:Number = fParseFloat(countdown2.text);
				var y = 20
				var x = y-rechnen;
				_root.zeit2.text = "Benötigte Zeit [Level2]: "+x+" Sekunden";
			}
			_root.punkte.text = "Punktestand: "+count+"/16";
		};
	}
}
//Daneben schießen
var error:MovieClip = this.daneben_mc;
var count_daneben = 0;
error.onPress = function() {
	if (this.hitTest(_root._xmouse, _root._ymouse)) {
		count_daneben++;
		_root.daneben.text = "Missglückte(r) Versuch(e): "+count_daneben;
	}
};
// Einschussloch
this.onMouseDown = function() {
	i++;
	this.attachMovie("schuss", "schuss"+i, i, {_x:_root._xmouse, _y:_root._ymouse});
};
//Counter1
function stopuhr1() {
	var i = 20;
	var tl = this;
	tl.countdown.setNewTextFormat(timeText);
	function countDown() {
		--i == -1 ? clearInterval(iv) : tl.countdown.text="Restzeit [Level1]: "+i+" Sek.";
		if (i == 5) {
			_root.schneller.text = "beeilung";
		}
		for (var y = 0; y<kreise1.length; y++) {
			var mc_kreis1:MovieClip = kreise1[y];
			if (i == 0) {
				kreise();
				mc_kreis1._visible = false;
			}
		}
	}
	iv = setInterval(countDown, 1000);
	tl.countdown.text = "Restzeit [Level1]: "+i+" Sek.";
}
//Counter2
function stopuhr2() {
	var i = 20;
	var tl = this;
	tl.countdown.setNewTextFormat(timeText);
	function countDown() {
		--i == -1 ? clearInterval(iv) : tl.countdown2.text="Restzeit [Level2]: "+i+" Sek.";
		if (i == 5) {
			_root.schneller.text = "beeilung";
		}
		for (var y = 0; y<kreise1.length; y++) {
			var mc_kreis2:MovieClip = kreise2[y];
			if (i == 0) {
				mc_kreis2._visible = false;
			}
		}
	}
	iv = setInterval(countDown, 1000);
	tl.countdown2.text = "Restzeit [Level2]: "+i+" Sek.";
}
EDIT: Also wenn ich die function fParseFloat rausnehme und dann eben den Text aus dem countdown.text dann rechnet er wieder richtig aber zeigt mir eben den Text nicht an. Wenn ich das mit der funtion mache, dann zeigt er mir zwar den text und die zahl an aber rechnet falsch. kommt immer 1 raus. Warum das denn?

Geändert von pacman.hgw (14-11-2007 um 15:22 Uhr)
pacman.hgw 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 02:48 Uhr.

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


Copyright ©1999 – 2014 Marc Thiele