スポンサーサイト

-------- | --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ActionScript 3.0] APEでマウスイベント処理

2007-10-23 | 21:27

下の青い円はマウスドラッグで移動できます。

package {
    import org.cove.ape.*;
   
    import flash.display.Sprite;
    import flash.events.*;

    [SWF(width="600", height="400", backgroundColor=0xffffff)]
    public class Main extends Sprite {
              
        public function Main() {
       
            stage.frameRate = 55;

            // フレーム毎にrun()を呼び出す
            addEventListener(Event.ENTER_FRAME, run);
           
            APEngine.init(1/4);
            APEngine.container = this;
           
            // 重力の設定
            APEngine.addMasslessForce(new Vector(0, 3));
           
            var g:Group = new Group();
            g.collideInternal = true; 
            APEngine.addGroup(g);

            // 床
            g.addParticle(new RectangleParticle(300,400,600,30,0,true));
            // 壁
            g.addParticle(new RectangleParticle(0,200,30,400,0,true));
            g.addParticle(new RectangleParticle(600,200,30,400,0,true));

            var bar:RectangleParticle = new RectangleParticle(300,200,30,300,0,true);
            bar.angle = 80;
            g.addParticle(bar);


            for(var i:int = 0 ; i < 9; i++){
                var ball:Ball = new Ball(10,10,(i+1)*5);
                g.addParticle(ball);

                ball.px=i*60;
                ball.mass = 10;
                ball.elasticity = 0.4;
            }
        }

        private function run(evt:Event):void {
            APEngine.step();
            APEngine.paint();
        }
    }
}

import org.cove.ape.*;
import flash.events.*;
internal class Ball extends CircleParticle{
    public function Ball(x:Number, y:Number, radius:Number) { 
        super(x,y,radius);
        setStyle(1,0xff,0.5,0xff,0.5);
        sprite.stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
        sprite.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
    }

    private function mouseUp (e:MouseEvent):void {
        sprite.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
    }

    private function mouseDown (e:MouseEvent):void {
        sprite.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
    }

    private function mouseMove (e:MouseEvent):void {
        px = e.stageX;
        py = e.stageY;
    } 
}


参考ページ(というか ほぼそのまま)
http://groups.google.com/group/ape-general/browse_thread/thread/61fef0d466c0e1a0/a9e3f17da4734eb2?#a9e3f17da4734eb2
スポンサーサイト

Comment

Post a comment

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。