Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-06-2006, 17:26   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 70
dynamische Ballerzeugung (Ballistik)

Hallo zusammen,

kleine Vorgeschichte:
Ich will mir nen Intro bauen, in dem 30++ Bälle vom Himmel fallen und wie Flummis umherspringen und dann irgendwann zur Ruhe kommen.

Ich hab' mich hier jetzt durch unzählige Threads geangelt und bin auch fündig geworden, was Skripte zur Ballistik anbelangt.

Hab mich mal für diese Variante entschieden.
Das Ganze klappt mit einem Ball, der vorher auf die Bühne gezogen wurde, auch herrlich. Null Probleme.

Allerdings brauch ich die Ballerzeugung dynamisch, da ich an ca. 30 Bälle rumspringen lassen will.
Ich zeichne mir also in einer Schleife mittels createEmptyMovielClip und ner geschrieben createCircle-Methode die neuen Bälle, die dann auf der Bühne per random horizontal platziert werden (sollen alle von oben runterfallen). Alles ohne Probleme....
So, jetzt muss ich ja jeder Ballinstanz die Ballistik-onEvents zuweisen und genau hier gibts Probleme. Irgendwie mach ich nen Fehler, so dass das aktuelle Objekt nicht erkannt wird.

.fla is im Anhang. Ich häng da jetzt schon an so nem kleinen Prob den ganzen Tag dran, also wär top wenn mir jemand nen Tip geben könnte. Hat prinzipiell ned direkt was mit Ballistik zu tun, sondert mit dynamischen Eventhandler zuweisen

Schonmal Danke
Angehängte Dateien
Dateityp: rar ZDF.rar (6,0 KB, 14x aufgerufen)

Geändert von feder (12-06-2006 um 17:27 Uhr)
feder ist offline   Mit Zitat antworten
Alt 12-06-2006, 17:44   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!
Hab's mal ein weing angepasst. Vor allem musst du jedem Ball seine eigenen Werte zuweisen.

Und denk dran, dass hgseib seine Beispiele zu Lernzwecken ins Netz stellt. Wenn du das also verwenden willst, dann frag ihn!!!

PHP-Code:
ballanzahl 10;
for (
i=1i<=ballanzahli++) {
    
newBall(_root.createEmptyMovieClip("ball"+ii), Math.random()*Stage.width, -random(400));
}
function 
newBall(containerposX:NumberposY:Number):Void {
    
//obj,x,y,r,liniendicke,linienfarbe,linienalpha,mitfüllung?,füllfarbe,füllalpha
    
createCircle(containerposXposY100000true"0xec8d05"100);
    
container.dir 0;
    
//0=down, 1=up
    
container.Speed_Y random(4)+6;
    
container.Speed_X 4.0;
    
Erdanziehung 0.8;
    
BodenHoehe Stage.height-this._height/2;
    
Daempfung 0.99;
    
container.ElastoZeigAbstand 10;
    
container.ElastoZoom 1;
    
container.onEnterFrame = function() {
        
//trace(this);
        
if (BodenHoehe<this._y && this.dir == 0) {
            
this.Speed_Y = -this.Speed_Y;
            
this._y BodenHoehe+Erdanziehung;
        }
        if (
this._x<this._width/|| this._x>Stage.width) {
            
this.Speed_X = -this.Speed_X;
        }
        
this.Speed_Y += Erdanziehung;
        
this.Speed_Y *= Daempfung;
        
this._y += this.Speed_Y;
        if (
Math.abs(this.Speed_X)>0.1) {
            
this.Speed_X *= Daempfung;
            
this._x -= this.Speed_X;
        }
        
this.Stauch 0;
        if ((
BodenHoehe-this._y)<this.ElastoZeigAbstand) {
            
this.Stauch Math.abs(this.Speed_Y)*this.ElastoZoom;
        }
        
this._xscale 100+this.Stauch;
        
this._yscale 100-this.Stauch;
    };
}
function 
createCircle(objxyradlwidthlcollalphafillfcolfalpha) {
    var 
getX = function (angle) {
        return 
half*Math.cos(Math.PI/180*angle)-Math.sin(Math.PI/180*angle);
    };
    var 
getY = function (angle) {
        return 
half*Math.sin(Math.PI/180*angle)+0*Math.cos(Math.PI/180*angle);
    };
    var 
half rad/2;
    
with (obj) {
        
_x x;
        
_y y;
        
lineStyle(lwidthlcollalpha);
        if (
fill) {
            
beginFill(fcolfalpha);
        }
        
moveTo(half0);
        var 
angle 0;
        for (var 
0i<8i++) {
            
curveTo(getX(angle+22.5)*1.0915getY(angle+22.5)*1.0915getX(angle+45), getY(angle+45));
            
angle += 45;
        }
        if (
fill) {
            
endFill();
        }
    }

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 12-06-2006, 18:13   #3 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 70
subba...werd ich gleich ma einbauen....

und Seib frag ich. Will hier niemand seine Arbeit klauen. Geht ja eh ned online das Ganze, sondern is nur für mich. Aber trotzdem werd ich ma Bescheid sagen.


Danke für die Hilfe
feder 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 08:20 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele