2011-01-11 16 views
0

私はパーティクル(ムービークリップ)とパーティクルビヘイビアを持っていますが、これを複製するには良い方法が必要ですシステム動作、幅を決定する唯一の値を10から100 pxまで変更します。AS3の粒子システム、フラッシュを使って、パーティクル要素をコピーする問題

これはコードです:

ので
//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); 

、あなたが見ることができるよう、パーは、粒子のインスタンス名で、まあ、私は.width値を変更し、それを複製し、最終的にする必要があります。 x値も。何か案は?ありがとう!

答えて

1

これはOOP(オブジェクト指向プログラミング)のすべてであり、Flashは素晴らしい例です。このような

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); 
     } 

    } 

} 

してからDocumentClassにあなたができる何か:

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

ここ

あなたがhttp://d.pr/ycUhを行きます。何が起こっているのか疑問がある場合は教えてください。パーティクルの開始位置にxとyの値をランダムに追加しました。

+0

これは私のAS3レベルでは非常に複雑ですが、これは(http://d.pr/ZiW9)は私の.flaですが、あなたの修正はありますが、複数のパーティクルを作成することはできません。ありがとう! – DomingoSL

+0

変更されたファイルに戻るdroplrリンクの私の編集を参照してください – sberry

+0

ありがとう!!!!それはうまくいくはず – DomingoSL

関連する問題