【練習】バネのある動き?

by Tamanegi_kenshi
♥0 | Line 151 | Modified 2010-02-16 19:36:55 | MIT License
play

ActionScript3 source code

/**
 * Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/n667
 */

package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.ui.Keyboard;
    import flash.filters.DropShadowFilter;
    public class FlashTest extends Sprite {
        public function FlashTest() {
         


var vx:Number =0;
var vy:Number =0;
var vx2:Number =0;
var vy2:Number =0;
var vx3:Number =0;
var vy3:Number =0;
var vx4:Number =0;
var vy4:Number =0;
var spring:Number =0.2;
var frict:Number =0.8;
var frict2:Number =0.75;
var frict3:Number =0.7;
var frict4:Number =0.7;
var targetX:Number=0;
var targetY:Number=0;
var targetX2:Number=targetX+20;
var targetY2:Number=targetY+80;
var targetX3:Number=targetX2;
var targetY3:Number=targetY2+70;
var targetX4:Number=targetX2+30;
var targetY4:Number=targetY2+70;



var bar_mc:Sprite =new Sprite();
with(bar_mc.graphics){
	lineStyle(2);
	beginFill(0xffffff);
	drawRect(0,0,100,80);
	endFill();
} 

var dorp:DropShadowFilter=new DropShadowFilter(180,90,0x000000,0.9,10,10,1);
var filter:Array =new Array();
filter.push(dorp);



var child:Sprite = new Sprite();
with(child.graphics){
 	lineStyle(2);
	beginFill(0xffffff);
	drawRect(0,0,60,70);
	endFill();
}
	var child2:Sprite = new Sprite();
    with(child2.graphics){
 	lineStyle(2);
	beginFill(0xffffff);
	drawRect(0,0,30,50);
	endFill();
} 
var child3:Sprite = new Sprite();
    with(child3.graphics){
 	lineStyle(2);
	beginFill(0xffffff);
	drawRect(0,0,30,50);
	endFill();
} 
var eye1:Sprite =new Sprite();
    with(eye1.graphics){
    	beginFill(0x000000);
    	drawCircle(30,35,8);
    	endFill()
    	}
    	var eye2:Sprite =new Sprite();
    with(eye2.graphics){
    	beginFill(0x000000);
    	drawCircle(70,35,8);
    	endFill()
    	}
    var mouth:Sprite =new Sprite();
    with(mouth.graphics){
    	
    	beginFill(0x000000);
    	moveTo(50,55);
    	lineTo(58,65);
    	lineTo(42,65);
    	lineTo(50,55);
    	endFill()
    	}

 
 



 addChild(child2);
 addChild(child3);
  addChild(child);
  bar_mc.addChild(eye1);
  bar_mc.addChild(eye2);
  bar_mc.addChild(mouth);
   addChild(bar_mc);



bar_mc.x =0;
bar_mc.y =0;


addEventListener(Event.ENTER_FRAME,onEnter);
stage.addEventListener(KeyboardEvent.KEY_DOWN,down);





function onEnter(event:Event):void{
    
 
    var ax:Number =(targetX-bar_mc.x)*spring;
    var ay:Number =(targetY-bar_mc.y)*spring;
    vx +=ax;
    vy +=ay;
    vx *=frict;
    vy *=frict;
    bar_mc.x+=vx;
    bar_mc.y+=vy;
    
    var ax2:Number =(targetX2-child.x)*spring;
    var ay2:Number =(targetY2-child.y)*spring;
    vx2 +=ax2;
    vy2 +=ay2;
    vx2 *=frict2;
    vy2 *=frict2;
    child.x+=vx2;
    child.y+=vy2;
    
    var ax3:Number =(targetX3-child2.x)*spring;
    var ay3:Number =(targetY3-child2.y)*spring;
    vx3 +=ax3;
    vy3 +=ay3;
    vx3 *=frict3;
    vy3 *=frict3;
    child2.x+=vx3;
    child2.y+=vy3;
    
   var ax4:Number =(targetX4-child3.x)*spring;
    var ay4:Number =(targetY4-child3.y)*spring;
    vx4 +=ax4;
    vy4 +=ay4;
    vx4 *=frict4;
    vy4 *=frict4;
    child3.x+=vx4;
    child3.y+=vy4;



}

function down(event:KeyboardEvent):void{
       if(event.keyCode==Keyboard.LEFT){
        targetX -=100;
        targetX2 -=100;
        targetX3 -=100;
        targetX4 -=100;
        
    }else if(event.keyCode==Keyboard.RIGHT){
        targetX +=100;
        targetX2 +=100;
        targetX3 +=100;
        targetX4 +=100;
      }else if(event.keyCode==Keyboard.DOWN){
        targetY +=100;
        targetY2 +=100;
        targetY3 +=100;
        targetY4 +=100;
      }else if(event.keyCode==Keyboard.UP){
        targetY -=100;
        targetY2 -=100;
        targetY3 -=100;
        targetY4 -=100;
      }
    }

            
        }
    }
}