2011-01-11 13 views
0

ich entwickle ein sehr einfaches Partikelsystem in AS3, ich habe das Partikel (ein MovieClip) und das Partikelverhalten, aber jetzt brauche ich einen guten Weg, es zu duplizieren Anzahl der Male und ändern Sie den einzigen Wert, der das Systemverhalten bestimmen, die Breite von 10 bis 100 px.Partikelsystem auf AS3, mit Flash, Problem beim Kopieren des Partikelelements

Dies ist der Code:

//some declarations 
var blur:BlurFilter = new BlurFilter(); 
var filterArray:Array = new Array(blur); 
import fl.transitions.Tween; 
import fl.transitions.easing.*; 

//the only input value, from 10 to 100 
par.width=100; 
//the equations that define the behavior. 
par.alpha=.0088*par.width+.98; 
par.height=par.width; 
blur.blurX = .75*par.width-.55; 
blur.blurY = blur.blurX; 
blur.quality = 1; 
par.filters = filterArray; 
//the movement of the particle 
var myTween:Tween = new Tween(par, "y", Strong.easeOut, par.y, stage.stageHeight+2*par.height, -.2*par.width+22, true); 

So, wie Sie sehen können, par der Instanzname für die Teilchen ist, na ja, muss ich es duplizieren den .width Wert zu ändern und schließlich den. x Wert auch. Irgendwelche Ideen? Vielen Dank!

Antwort

1

Das ist es, was OOP (Object Oriented Programming) ausmacht, und Flash ist ein großartiges Beispiel.

package { 

    import flash.filters.BlurFilter; 
    import fl.transitions.Tween; 
    import fl.transitions.easing.*; 
    import flash.display.MovieClip; 
    import flash.events.Event; 

    public class Particle extends MovieClip { 

     public function Particle() { 
      // constructor code 
      //some declarations 
      this.graphics.beginFill(0, 1); 
      this.graphics.drawCircle(0, 0, 50); 
      var blur:BlurFilter = new BlurFilter(); 
      var filterArray:Array = new Array(blur); 
      //the only input value, from 10 to 100 
      this.width = Math.round(Math.random() * 90) + 10; 
      //the equations that define the behavior. 
      this.alpha = .0088 * this.width + .98; 
      this.height = this.width; 
      blur.blurX = .75 * this.width - .55; 
      blur.blurY = blur.blurX; 
      blur.quality = 1; 
      this.filters = filterArray; 
      this.addEventListener(Event.ADDED_TO_STAGE, __tweenMe); 
     } 


     private function __tweenMe($evt:Event):void { 
      //the movement of the particle 
      var myTween:Tween = new Tween(this, "y", Strong.easeOut, this.y, stage.stageHeight+2*this.height, -.2*this.width+22, true); 
     } 

    } 

} 

und dann in Ihrem Document könnten Sie so etwas tun:

package { 

    import flash.display.MovieClip; 

    public class BaseClass extends MovieClip { 

     public function BaseClass() { 
     var par:Particle; 
      for (var i:int = 0; i < 100; i++) { 
       par = new Particle(); 
       addChild(par); 
      }  
     } 
    }  
} 

EDIT

Hier gehen Sie http://d.pr/ycUh. Lass es mich wissen, wenn du Fragen hast was passiert. Ich habe einige zufällige x- und y-Werte für die Startpositionen Ihrer Partikel hinzugefügt.

+0

tut mir leid, aber das ist sehr kompliziert für meine AS3-Ebene, das (http://d.pr/ZiW9) ist meine .fla mit Ihren Modifikationen, aber ich kann nicht mehr als ein Teilchen, Vielen Dank! – DomingoSL

+0

Siehe meine Bearbeitung für den Droplr-Link zurück zu Ihren geänderten Datei (en) – sberry

+0

Danke !!!! das sollte funktionieren – DomingoSL