コードを短くするにはどうすればよいですか?
forked from forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: forked from: flash on 2010-1-13 (diff: 119)
バネ運動を作ったのですが、同じようなコードを何度も繰り返して長くなりました。 forや関数を使っていろいろ試みたのですが、うまくいきません。 もしよろしければ、良い方法を教えていただけないでしょうか 下記のコードはいろいろ試みる前の長いコードです。 初心者過ぎる質問、汚いコードで申し訳ありません。 よろしくおねがいします。
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/frgN
*/
//バネ運動を作ったのですが、同じようなコードを何度も繰り返して長くなりました。
//forや関数を使っていろいろ試みたのですが、うまくいきません。
//
//もしよろしければ、良い方法を教えていただけないでしょうか
//
//下記のコードはいろいろ試みる前の長いコードです。
//初心者過ぎる質問、汚いコードで申し訳ありません。
//よろしくおねがいします。
package{
import flash.display.Sprite;
import flash.events.Event;
import flash.display.GradientType;
import flash.geom.Matrix;
public class sp extends Sprite{
//変数
private var ball:Sprite;
private var ball2:Sprite;
private var ball3:Sprite;
private var spring:Number = 0.08;
private var spring2:Number = 0.07;
private var vx:Number = 0;
private var vx2:Number = 0;
private var vx3:Number = 0;
private var gravity:Number = 4;
private var vy:Number = 0;
private var vy2:Number = 0;
private var vy3:Number = 0;
private var friction:Number =0.9;
public function sp(){
init();
}
private function init():void{
//ボールの作成
var color:Array =[0x000000,0x000000];
var alpha :Array =[0.3,1];
var ration:Array =[0,255];
var mat:Matrix =new Matrix();
mat.createGradientBox(30,30,0,-20,-20);
ball = new Sprite();
ball.graphics.beginGradientFill(GradientType.RADIAL,color,alpha,ration,mat);
ball.graphics.drawCircle(0,0,20);
ball.graphics.endFill();
addChild(ball);
ball.y =0;
ball2 = new Sprite();
ball2.graphics.beginGradientFill(GradientType.RADIAL,color,alpha,ration,mat);
ball2.graphics.drawCircle(0,0,20);
ball2.graphics.endFill();
addChild(ball2);
ball3 = new Sprite();
ball3.graphics.beginGradientFill(GradientType.RADIAL,color,alpha,ration,mat);
ball3.graphics.drawCircle(0,0,20);
ball3.graphics.endFill();
addChild(ball3);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(event:Event):void{
if(ball3.y<0){
vy3 *=-1;
ball3.y =0;
}
//バネ運動
var dx:Number =(mouseX-ball.x);
var dy:Number =(mouseY -ball.y);
var ax:Number =dx*spring;
var ay:Number =dy*spring;
vx +=ax;
vx *=friction;
vy +=ay;
vy *=friction;
vy +=gravity;
ball.x +=vx;
ball.y +=vy;
var dx2:Number =(ball.x-ball2.x);
var dy2:Number =(ball.y-ball2.y);
var ax2:Number =dx2*spring2;
var ay2:Number =dy2*spring2;
vx2 +=ax2;
vx2 *=friction;
vy2+=ay2;
vy2 *=friction;
vy2 +=gravity;
ball2.x +=vx2;
ball2.y +=vy2;
var dx3:Number =(ball2.x-ball3.x);
var dy3:Number =(ball2.y-ball3.y);
var ax3:Number =dx3*spring2;
var ay3:Number =dy3*spring2;
vx3 +=ax3;
vx3 *=friction;
vy3+=ay3;
vy3 *=friction;
vy3 +=gravity;
ball3.x +=vx3;
ball3.y +=vy3;
}
}
}
Forked
2
3