fc2ブログ

[ActionScript 3.0] Fisix サンプル

2007-10-25 | 21:58

Fisix サンプル

次の処理のサンプル

  • パーティクルとスプリングの接続
  • 画像貼付け
  • マウスクリックとパーティクルの割当

    package
    {
        import com.fileitup.fisixengine.collisions.*;
        import com.fileitup.fisixengine.core.*;
        import com.fileitup.fisixengine.graphics.*;
        import com.fileitup.fisixengine.particles.*;
        import com.fileitup.fisixengine.utils.MouseAttacher;
    
        import flash.display.*;
        import flash.events.*;
        import flash.text.TextField;
    
        [SWF(width='600',height='400',backgroundColor='0xffffff',framerate='30')]
            public class Main extends MovieClip{       
                [Embed(source="lena.jpg")]
                    public var bm:Class;
                private var myEngine:FisixEngine;
                private var mouseAttacher:MouseAttacher;
                public function Main(){
                    // 最初にFisixEngineオブジェクトを作る
                    myEngine = new FisixEngine();
                    // 衝突時のモードを設定
                    myEngine.setReactionMode(ReactionModes.PHYSICAL);
    
                    // 重力を設定(x方向 0, y方向 30) :
                    myEngine.setGravity(0,30);
    
                    var bmp:Bitmap = new bm() as Bitmap;
                    createSpringBitmap(300,50,new bm() as Bitmap);
    
                    myEngine.setRender(true);
                    myEngine.setRenderGraphics(graphics);
                    // エンジンの開始
                    myEngine.startEngine(30);
    
                }
    
                private function createSpringBitmap(x:int, y:int, bmp:Bitmap):void{
                    // 円を三つ作ってスプリングでつなぐ
                    var p1:CircleParticle = new CircleParticle(x,y,10);
                    var p2:CircleParticle = new CircleParticle(x+100,y,10);
                    var p3:CircleParticle = new CircleParticle(x+200,y,10);
                    myEngine.newSpringConstraint(p1,p2,0.8);
                    myEngine.newSpringConstraint(p2,p3,0.5);
                    myEngine.addObject(p1);
                    myEngine.addObject(p2);
                    myEngine.addObject(p3);
                    // p1 は固定する
                    p1.fixed = true;
    
                    // グラフィックスをp3に接続
                    bmp.x =  - bmp.width/2;
                    //bmp.y =  - bmp.height/2;
                    var spr:Sprite = new Sprite();
                    spr.addChild(bmp);
                    addChild(spr);
                    myEngine.newParticleAttacher(spr, p3);
    
                    // マウスが押されたら2番目の間接とマウスを結びつける
                    stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void{
                            mouseAttacher = myEngine.newMouseAttacher(p2, root,3);
                            });
                    // マウスが離されたら2番目の間接とマウスを切り離す
                    stage.addEventListener(MouseEvent.MOUSE_UP, function(e:MouseEvent):void{
                            if(mouseAttacher != null)
                            myEngine.removeMouseAttacher(mouseAttacher);
                            });
                }
            }
    }
    
    
    スポンサーサイト



  • Trackback


    この記事にトラックバックする(FC2ブログユーザー)

    [ActionScript]The Fisix Engine is an Actionscript 3.0 physics engine

    miscellaneous ActionScript 3.0 Fisixサンプル いつも面白い記事を読ませてもらってます。 で、今回は物理シミュレーションエンジンのサンプル。なんかに使えそうなんだけどなぁ

    Comment

    Post a comment

    Secret