var p:Array;//各雪の位置
var kasoku:Array;//各雪の加速するための定数(kasoku分だけpushされる)

[setup, 400, 400]{
//障害物の岩をActionScriptでムービークリップとして作成する.
_root.createEmptyMovieClip("iwa", 100);
_root["iwa"].beginFill(0xFFFFFF, 20);
_root["iwa"].moveTo(200, 200);
_root["iwa"].lineTo(100, 300);
_root["iwa"].lineTo(200, 400);
_root["iwa"].lineTo(300, 300);
_root["iwa"].endFill();

//各雪の位置と加速の定数を初期化する.
p = new Array();
kasoku = new Array();
for(var i=0; i < 40; ++i){
p[i] = new point(random()*400, random()*200);//最初,雪の位置はランダム
kasoku[i] = random()*5+1;//加速の定数は1 ~ 6の間
}

//画面背景を黒にする
setBackColor(0, 0, 0);
}

[paint]{
//各雪を直径8ピクセルの円として描画する.
clearAll();
setColor(255, 255, 255);
for(var i=0; i < p.length; ++i){
fillOval(p[i], 8, 8);
}
}

[always]{
//マウスの移動方向をkakudoとして計算しておく
var kakudo:Number = Math.atan2(mouse.y - preMouse.y, mouse.x - preMouse.x);

//各雪の移動の計算
for(var i=0; i < p.length; ++i){
//もし雪と岩があたっていたならば
if(_root["iwa"].hitTest(p[i].x, p[i].y, true)){
// p[i].vel.y = 0; //雪の速度を止める(今はコメントアウトしているので止まらない,,ので,でもpushしないので結局ゆっくりと止まる)
}else{//それ以外,つまり雪と岩があたっていないのなら
p[i].push(kasoku[i], Math.PI/2); //雪を下方向にそれぞれが設定されている加速の定数で押す(落とす)
}

//マウスで振り払うための計算
var dist:Number = p[i].distanceTo(mouse); //雪の位置からマウスまでの距離を計算して
dist = 30 - dist; //その値を30から引くと,距離0のものが「30」,遠くにいくに連れて値が下がる
if(dist < 0) dist = 0; //値がマイナスのものは0にしておく.
//この段階でdistには最近距離のものが30でマウスが離れるにしたがって値が下がり,
//距離が30以上のときは0,という値が設定される.
if(mouse.x != preMouse.x || mouse.y != preMouse.y){ //もしマウスが動いているならば
p[i].push(dist*2, kakudo); //(マウスに近い雪をマウスの移動方向に動かす)
}

//雪が画面から(下に)出てしまったときに,,,
if(p[i].y > 400){
//画面の最上部のどこかに持ってきて,加速の定数を初期化する.
p[i].x = random()*400;
p[i].y = 0;
kasoku[i] = random()*5+1;
}
}
}