Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-07-2006, 16:19   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2006
Beiträge: 2
interval probleme

Hi, ich hab gerade erst angefangen ein wenig zu programmieren und bin noch in der versuchsphase. ich hab mal angefangen ein kleines spiel zu programmieren und hab nun folgendes problem. ich will ein objekt hin und her "fliegen" lassen. ich habe es nun mit intervallen versucht aber immer wenn das object auf einer seite angekommen ist und zurück "fliegt" beschleunigt es. somit stürzt der rechner in kürzester zeit ab. ich komme aber leider nicht auf das problem.
hier der code:

import com.spaceclasses.*;
class Boss extends MovieClip {
private var speed_vertical:Number;
private var speed_horizontal:Number;
private var interval_obj1:Object;
private var interval_obj2:Object;
private var interval1:Number = 1;
private var interval2:Number = 2;
public var game_manager_pointer:GameManager;

public function Boss () {
speed_horizontal = 6;
fly ();
}

public function fly ():Void {
//this.onEnterFrame = this.move1;
inter1();
}



public function inter1 () {
this.interval_obj1 = new Object ();
this.interval_obj1.onIntervalCalled = function (manager) {
manager.move1 ();
}


this.interval1 = setInterval(this.interval_obj1.onIntervalCalled, 100, this);
this.interval_obj1.onIntervalCalled ();


}


private function move1 () {
this._x = this._x + speed_horizontal;
if (this._x > 750) {
delete (interval_obj1);
clearInterval (1);
inter2();
}
else if (this._x > Stage.width + 30) {
this.removeMovieClip ();
}
}




public function inter2 () {
this.interval_obj2 = new Object ();
this.interval_obj2.onIntervalCalled = function (manager) {
manager.move2 ();
}


this.interval2 = setInterval(this.interval_obj2.onIntervalCalled, 100, this);
this.interval_obj2.onIntervalCalled ();

}



private function move2 () {
this._x = this._x - speed_horizontal;
if (this._x < 50) {
delete (interval_obj2);
clearInterval (2);
inter1();}
else if (this._x < -20) {
this.removeMovieClip ();
}
}
}
oldi ist offline   Mit Zitat antworten
Alt 01-07-2006, 16:34   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Hallo und willkommen im Flashforum.

Ich habe zwar leider keine Antwort für Dich,
aber einen Tipp wie Du Deinen Code im Forum
lesbarer gestalten kannst.
Wenn Du um den Code (code) dein code (/code)
oder (php) dein code (/php) schreibst, und an-
stelle der runden klammern eckige benutzt,
dann sieht es so aus. (frag nicht wieso «php»).
okay, ich habe zusätzlich noch ein bißchen die
zeilen eingerückt.

gruß, gaspode

PHP-Code:
import com.spaceclasses.*;

class 
Boss extends MovieClip {

    private var 
speed_vertical:Number;
    private var 
speed_horizontal:Number;
    private var 
interval_obj1:Object;
    private var 
interval_obj2:Object;
    private var 
interval1:Number 1;
    private var 
interval2:Number 2;
    public var 
game_manager_pointer:GameManager;

    public function 
Boss () {
        
speed_horizontal 6;
        
fly ();
    }

    public function 
fly ():Void {
        
//this.onEnterFrame = this.move1;
        
inter1();
    }

    public function 
inter1 () {
        
this.interval_obj1 = new Object ();
        
this.interval_obj1.onIntervalCalled = function (manager) {
            
manager.move1 ();
        }
        
this.interval1 setInterval(this.interval_obj1.onIntervalCalled100this);
        
this.interval_obj1.onIntervalCalled ();
    }

    private function 
move1 () { 
        
this._x this._x speed_horizontal;
        if (
this._x 750) {
            
delete (interval_obj1);
            
clearInterval (1);
            
inter2();
        } else if (
this._x Stage.width 30) {
            
this.removeMovieClip ();
        }
    }

    public function 
inter2 () {
        
this.interval_obj2 = new Object ();
        
this.interval_obj2.onIntervalCalled = function (manager) {
            
manager.move2 ();
        }
        
this.interval2 setInterval(this.interval_obj2.onIntervalCalled100this);
        
this.interval_obj2.onIntervalCalled ();
    }

    private function 
move2 () { 
        
this._x this._x speed_horizontal;
        if (
this._x 50) {
            
delete (interval_obj2);
            
clearInterval (2);
            
inter1();
        } else if (
this._x < -20) {
            
this.removeMovieClip ();
        }
    }


gaspode ist offline   Mit Zitat antworten
Alt 01-07-2006, 16:38   #3 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!

Gerade mit Flash angefangen und schon eine Klasse .
Halt doch mal den Ball flach . Das Hin- und Herbewegen ginge z.B. einfach so:
PHP-Code:
mc.speed 6;
this.mc.onEnterFrame = function() {
    if (
this._x>=500 || this._x<0) {
        
this.speed *= -1;
    }
    
this._x += this.speed;
}; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-07-2006, 16:39   #4 (permalink)
using namespace
 
Benutzerbild von artjom
 
Registriert seit: May 2002
Ort: Hamburg underground
Beiträge: 657
Zitat:
private var interval1:Number = 1;
die interval id legst nicht du fest, sondern die methode setInterval gibt sie dir zurück.
daher ist sowas falsch:
Zitat:
clearInterval (2);
muss in die richtung gehen:
PHP-Code:
this.interval1=setInterval(.....);
.. 
mach was
.. und dann:
clearInterval(this.interval1); 
zwar liefert setInterval eine abfolge von ids in aufsteigender form, aber wenn mal irgendwo ein anderer interval gestartet wird, stimmt die konstante "2" nicht mehr: clearInterval (2);

gruß
__________________
artjom.com -|- Melom
Einen PC beschleunigen? Klar, mit 9,81 m/s^2!
artjom ist offline   Mit Zitat antworten
Alt 01-07-2006, 17:01   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2006
Beiträge: 2
hi,
danke für eure hilfe. funktioniert jetzt einwandfrei.
lg oldi
oldi 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 16:45 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele