ボールは自分の意思をもって動きます。壁にぶつかると膨張します。
var pmx:int = 1+int(Math.random()*2)*-2;
var pmy:int = 1+int(Math.random()*2)*-2;
//pmx,pmyは方向転換、1と-1のどちらかになる。
var vx:Number = 10;
var vy:Number = 10;
//vx,vyはスピード、今のx,yに加える値
var ax:int = 10;
var ay:int = 10;
//
var flagx:int = 1;
var flagy:int = 1;
//壁の部分で何度もpmx,pmyがひっかかることがあるので
//壁の部分で跳ね返るときにそこでpmx,pmyを一定時間変えない
//調整用に後から入れました。
var box_size:int = 20;
//ボックスの大きさも含めてx,yの位置を表示するための値
a_mc.addEventListener(Event.ENTER_FRAME, EF);
//
var aa:int;
var vv:int;
function acceleration(aa,vv):int {
if (vv>=30) {//速さ(加算する値)
aa = -int(Math.random()*5);//30より速いときはスピードダウン
} else if (vv<=5) {//5より遅いときはスピードアップ
aa = int(Math.random()*5) - 1 ;
} else {//それ以外は-2~2の間でスピード調節
aa = int(Math.random()*5) - 2;
}
return aa;
}
//1フレームごとのイベントを追加
function EF(event:Event):void {
//イベントの内容
if (flagx == 1 && event.target.x >= 400-box_size ) {
pmx *= -1;
event.target.gotoAndPlay(2);
ax = acceleration(ax,vx);
flagx = 10;
}//10フレームはpmxを変化させない
if (flagx == 1 && event.target.x <= 0+box_size) {
pmx *= -1;
event.target.gotoAndPlay(2);
ax = acceleration(ax,vx);
flagx = 10;
}
if (flagy == 1 && event.target.y >= 400-box_size) {
pmy*= -1;
event.target.gotoAndPlay(2);
ay = acceleration(ay,vy);
flagy = 10;
}
if (flagy == 1 && event.target.y <= 0+box_size) {
pmy*= -1;
event.target.gotoAndPlay(2);
ay = acceleration(ay,vy);
flagy = 10;
}
if (flagx != 1) {
flagx --;//ここでフラグをカウントダウン
}
if (flagy != 1) {
flagy --;
}
//
vx += ax;trace(ax);
vy += ay;
event.target.x += vx*pmx;//位置を計算して表示
event.target.y += vy*pmy;//event.targetはイベントを追加している元
vx_txt.text = String("speed_x = "+vx);//画面上のテキストボックスに表示
vy_txt.text = String("speed_y = "+vy);
}






コメントのRSSを取得する · トラックバック