Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-08-2004, 07:54   #1 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Probleme mit SetInterval/AS-Pause

Hallo zusammen,

nachdem ich jetzt schon eine weile das Forum lese habe ich doch einmal eine Frage, es geht um folgendes Problem: Ich habe eine for Schleife in der ein Bewegungspfad (ermittelt aus A* Algo) "abgelaufen" wird, das geht aus super. Aber dabei ermittle ich die Bewegungsrichtung und will, sobald sich die Richtung ändert, dass sich die Figur in die richtige Richtung dreht und dann weiterläuft. Das macht sie auch nur leide bekomme ich es nicht hin das Actionscript wartet bis der extra Movieclip für die Drehung zu Ende ist. Ich habs auch mit if probiert und anderen arten SetInterval aufzurufen, habt ihr ne Idee?

Danke im voraus - brainyartist

Ist ersmal nur die Rechtsdrehung, für die anderen kann mans ja dann implementieren. In dem Bewegungsmovieclip wird im letzten frame _global.pause auf true gesetzt.

Code:
for (b=0; b<=closedList.length; b++) 
{
	switch (closedList[b].richtung)
	{
		case "unten" :
			char._x -= 27;
			char._y += 13, 5;
			charY++;
			look = "unten";
			break;
		case "oben" :
			char.gotoAndStop(3);
		case "links" :
			char.gotoAndStop(2);
		case "rechts" :
			char.gotoAndStop(4);
			//Funktion die auf die Rückgabe vom Bewegungsmovieclip wartet
			
                 walk = function (aufruf) 
			{
				if (_global.pause == true) 	
				{
					charX++;
					//trace(_global.pause);
					char._x += 27;
					char._y += 13,5;
					_global.pause == false;
					clearInterval(processID);		
				} else
				{
				/*alter Aufruf von setInterval
                      if (aufruf==true)
					{
						processID = setInterval(walk,500);
						
					}*/
				}
			
			};				
			
			trace (look);
			if (look == "rechts")
			{
				charX++;
				//trace(_global.pause);
				char._x += 27;
				char._y += 13, 5;
			}
			else
			{
				funktionsaufruf = true
				processID =  setInterval(walk(funktionsaufruf),500);
				//walk(funktionsaufruf);
			}
			//alte Blickrichtung
			look = "rechts";
				
			//trace("nach aufruf");
			break;
			default :
				//trace("in switch");
}
brainyartist ist offline   Mit Zitat antworten
Alt 04-08-2004, 09:46   #2 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Angry ahrg - hocke immernoch davor

Guten Morgen,
bin immernoch beim Problem, hab aber ne neue Frage, siehe unten.
Ich hab jetzt meinen Code in OOP umgebaut, da stieß ich auf die Frag ob das irgendwie geht, wenn ja wäre mein Problem gelöst...

So ruft er meto2 nur einmal auf und nicht im Interval, außerdem ist pID undefiniert.

PHP-Code:
kleineObjekt = function()
{
    
this.zahl1 1;
    
this.zahl2 2;
    
    
//trace(this.zahl1);
};
kleineObjekt.prototype.meto1 = function()
{
    
    
trace(this.zahl1);
    
//this.meto2();
    
processID setInterval(this.meto2(processID),200);

};
kleineObjekt.prototype.meto2 = function(pID)
{

    
trace(this.zahl2);
    
//is undefined?
    
trace(pID);
    
//clearInterval(pID);
    
};

ich = new kleineObjekt();
ich.meto1(); 
Und so ruft er es auf, aber sowohl zahl2 als auch pID sind undefined?
PHP-Code:
processID setInterval(this.meto2,200,processID); 
Irgendwie weiß ich nicht weiter und es wäre nett wenn jemand helfen könnte...

gruß brainyartist
brainyartist ist offline   Mit Zitat antworten
Alt 04-08-2004, 09:53   #3 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hi,

setInterval wird folgendermaßen aufgerufen...

ActionScript:
  1. intId=setInterval(funktionsname,interval[,funktionsparameter1,...,funktionsparameter_n]);

also in deinem fall:

ActionScript:
  1. processID = setInterval(this.meto2,200,processID);

ausserdem könnte se probleme geben da deine interval-id genauso heißt wie der funktionsparameter...

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!

Geändert von fraggle two (04-08-2004 um 09:55 Uhr)
fraggle two ist offline   Mit Zitat antworten
Alt 04-08-2004, 10:46   #4 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Unhappy

Hm, ja jetzt gehts, danke, zumindest im Test-Programm, aber nicht in meinem richtigen... trotzdem bleibt die Frage warum zahl2 undefined ist, habt ihr ne Idee?

PHP-Code:
kleineObjekt = function()
{
    
this.zahl1 1;
    
this.zahl2 2;
    
    
//trace(this.zahl1);
};
kleineObjekt.prototype.meto1 = function()
{
    
    
trace(this.zahl1);
    
    
_global.processID setInterval(this.meto2,200);
    
trace("is: "+_global.processID);

};
kleineObjekt.prototype.meto2 = function()
{
    
//undefined
    
trace(this.zahl2);
    
    
trace(_global.processID);
    
//clearInterval(_global.processID);
    
};

ich = new kleineObjekt();
ich.meto1(); 
gruß brainyartist
brainyartist ist offline   Mit Zitat antworten
Alt 04-08-2004, 10:59   #5 (permalink)
The Man Who Wasn't There
 
Benutzerbild von fraggle two
 
Registriert seit: Jul 2003
Ort: BÄRLIN
Beiträge: 1.156
hmmm...

wo liegt der unterschied zwischen deinem testprogramm und deinem richtigen?

gruß
mike
__________________
Dot-Realities
Mike Broders
Berlin

ICQ:105925103

Dot-Realities v4.0 under construction!
fraggle two ist offline   Mit Zitat antworten
Alt 04-08-2004, 11:02   #6 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Lightbulb

Der Fehler ist weg, da hab ich doch glatt am Ende einer Methodendefinition = function() vergessen, trotzdem wird jetzt die Frage nach dem this.zahl2 undefined extrem interessant. Denn ohne die funktionert der Trick nicht, ich kann ja mal alles was dazu gehört posten, wenn ihr wollt.

gruß brainyartist
brainyartist ist offline   Mit Zitat antworten
Alt 05-08-2004, 03:16   #7 (permalink)
Neuer User
 
Benutzerbild von Pinback
 
Registriert seit: Feb 2004
Ort: Berlin [Adlershof]
Beiträge: 19
So geht's...

Morjen...
Hier dein Skript mit den richtigen Werten.
MfG
Pinback

=========================
Code:
myClass = function () {
	this.zahl1 = 1;
	this.zahl2 = 2;
};
myClass.prototype = new MovieClip();
myClass.prototype.meto1 = function () {
	_global.processID = setInterval (this.meto2, 200, this);
};
myClass.prototype.meto2 = function (me) {
	// so gehts...
	trace (me.zahl2);
	clearInterval(_global.processID); 
};

ich = new myClass ();
ich.meto1 ();
==========================
__________________
"Die Männer auf diesem Schiff sind zutiefst krank. Sie wollen kein fröhliches Schiff!"
Pinback ist offline   Mit Zitat antworten
Alt 05-08-2004, 06:20   #8 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Perfekt, danke! Es gibt also noch mehr Leute aus Berlin die heute Nacht nicht geschlafen haben :-)

Kleine Frage noch, warum vererbst du da?

Code:
myClass.prototype = new MovieClip();
Das Skript geht ja auch ohne, trotzdem, könnte ja vielleicht eine Bewandnis haben von der ich nichts weiß.

gruß brainyartist
brainyartist ist offline   Mit Zitat antworten
Alt 05-08-2004, 10:25   #9 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
der new MCiss überflüssig.,..

und das übergeben des objektes als parameter ist notwendig...weil der interval im kontext der intervalfunktion als 'this' fungiert, da das objekt 'interval' sich selbst ruft, bzw. die funktiuon ruft...das heißt:
du verlierst den scope deines objektes innerhalb einer intervalfunktion...
verstanden?...
du dass überreichen deines obejktes als param an die funktion, kann man im funktionskörper wieder via argument druaf zu greifen...

greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 05-08-2004, 11:11   #10 (permalink)
Neuer User
 
Benutzerbild von Pinback
 
Registriert seit: Feb 2004
Ort: Berlin [Adlershof]
Beiträge: 19
RE..warum vererbst du da?

Morjen...uuaaah (noch müde etwas)

Zitat:
Zitat von brainyartist
Kleine Frage noch, warum vererbst du da?

Code:
myClass.prototype = new MovieClip();
Das Skript geht ja auch ohne...
Du hast natürlich recht. Ist in diesem Fall überflüssig.
Wennste allerdings diese Klasse mit einem MC verknüpfen(s.Object.registerClass()) wolltest
oder mit attachMovie(), erbt dieser MC auch alle
MovieClip-Eigenschaften - was nicht automatisch der Fall wäre.

Einen guten Morgen wünscht:
Pinback
__________________
"Die Männer auf diesem Schiff sind zutiefst krank. Sie wollen kein fröhliches Schiff!"
Pinback ist offline   Mit Zitat antworten
Alt 05-08-2004, 11:16   #11 (permalink)
Neuer User
 
Benutzerbild von Pinback
 
Registriert seit: Feb 2004
Ort: Berlin [Adlershof]
Beiträge: 19
Zitat:
Zitat von kelor
du dass überreichen deines obejktes als param an die funktion, kann man im funktionskörper wieder via argument druaf zu greifen...
Ähmm..öhhmmm???

Ich glaube da war noch jemand lange wach
Pinback
__________________
"Die Männer auf diesem Schiff sind zutiefst krank. Sie wollen kein fröhliches Schiff!"
Pinback ist offline   Mit Zitat antworten
Alt 05-08-2004, 15:24   #12 (permalink)
querdenker
 
Benutzerbild von kelor
 
Registriert seit: Jun 2001
Ort: formel1-stadt hockenheim
Beiträge: 4.731
jaja...aber das prinzip wurde verstanden...ich meine...meiner aussage...

oder?!


greetz

kelor
kelor ist offline   Mit Zitat antworten
Alt 10-08-2004, 08:58   #13 (permalink)
glücklich
 
Registriert seit: Mar 2004
Ort: Berlin
Beiträge: 27
Zitat:
Zitat von kelor

du verlierst den scope deines objektes innerhalb einer intervalfunktion...
verstanden?...
du dass überreichen deines obejktes als param an die funktion, kann man im funktionskörper wieder via argument druaf zu greifen...

greetz

kelor
Jepp habs mir schon gedacht, inzwischen ist es echt top am laufen, danke für die Hilfe

greets brainyartist
brainyartist 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:52 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele