Subscribe to RSS Feed ログイン

FLASH備忘6|ActionScriptやらWordPressやらを楽しむ会

Thursday
2010年9月09日

即興でFlashをつくってみよう5

ボールは自分の意思をもって動きます。壁にぶつかると膨張します。

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を取得する · トラックバック

コメントする