Skip to main content
Inspiring
June 12, 2017
Question

The ball not collision to other ball.

  • June 12, 2017
  • 1 reply
  • 1031 views

I'triyng to collision the ball with other balls.There is a 2 diffrent ball we have.Balls created from the system,and creating by the player.I have only one ball collision.It's not collide with other balls.How can I collide for other circle.

aeg.gif

import flash.geom.Point;

var NUMBER_OF_CIRCLES:Number = 2;

var NUMKEKKO:Number = 1;

var circle_array:Array;

var boru_array:Array;

var vector_array:Array;

var mass_array:Array;

var mouseuo:Boolean=false;

var the_kall:kall;      //Big ball ( make by player)

var mcKall:boru;

var barz:circle;//

var drag:Boolean=false;

var mcKallCont:MovieClip;

  var kao:Number=10;

  var kao2:Number=10;

  var topisler:Number=2;

  var gonzo:Number=0;

  var topyap:Boolean=true;

stage.addEventListener(Event.ENTER_FRAME, init);

function init(e:Event){

if(topyap==true){

  circle_array = new Array();

  vector_array = new Array();

  mass_array = new Array();

  boru_array = new Array();

  for(var i:Number = 0; i < NUMBER_OF_CIRCLES; i++){

  circle_array = new circle();

  circle_array.width = 25;// circle_array.width = (Math.random() * 50);

  circle_array.height = circle_array.width;

  circle_array.x = (circle_array.width/2) + (Math.random() * (550 - circle_array.width*(3/2)));

  circle_array.y = (circle_array.height/2) + (Math.random() * (400 - circle_array.height*(3/2)));

  var new_color:uint = 0x000077 * Math.random();

  new_color += 0x000088;

  switch(i%3){

  case 0:

  new_color = new_color << 16;

  break;

  case 1:

  new_color = new_color << 8;

  break;

  }

  //new_color = new_color << 16;

  var myColor:ColorTransform = this.transform.colorTransform;

  myColor.color = new_color;

  circle_array.inner.transform.colorTransform = myColor;

  addChild(circle_array);

  circle_array.id = i;

  vector_array = new Array(Math.random() * 10, Math.random() * 10);

  mass_array = circle_array.width * 0.10;

  }

}

topyap=false;

  stage.addEventListener(Event.ENTER_FRAME, circle_update);

}

function circle_update(e:Event){

  for(var i:Number = 0; i < NUMBER_OF_CIRCLES; i++){

  circle_array.x += vector_array[0];

  circle_array.y += vector_array[1];

  //bounding wall collisions

  if(circle_array.x + (circle_array.width * 0.50) >= 550){ vector_array[circle_array.id][0] *= -1; circle_array.x = 550 - circle_array.width * 0.50; }

  if(circle_array.x - (circle_array.width * 0.50) <= 0){ vector_array[circle_array.id][0] *= -1;  circle_array.x = circle_array.width * 0.50; }

  if(circle_array.y + (circle_array.width * 0.50) >= 400){ vector_array[circle_array.id][1] *= -1; circle_array.y = 400 - circle_array.height * 0.50;  }

  if(circle_array.y - (circle_array.width * 0.50) <= 0){ vector_array[circle_array.id][1] *= -1; circle_array.y = circle_array.height * 0.50;   }

  }

  //ball to ball collisions

  for(var g:Number = 0; g < NUMBER_OF_CIRCLES; g++){

  var g_pos:Point = new Point(circle_array.x, circle_array.y)

  for(var k:Number = g + 1; k < NUMBER_OF_CIRCLES; k++){

  var dist = Point.distance(g_pos, new Point(circle_array.x, circle_array.y));

  if( dist < ((circle_array.width * 0.50) + (circle_array.width * 0.50)) ){

  //they're colliding!

  //elastic response

  var mass1:Number = mass_array;

  var mass2:Number = mass_array;

  var mass_sum = mass1 + mass2;

  var velX1:Number = vector_array[0];

  var velX2:Number = vector_array[0];

  var velY1:Number = vector_array[1];

  var velY2:Number = vector_array[1];

  var new_velX1 = (velX1 * (mass1 - mass2) + (2 * mass2 * velX2)) / mass_sum;

  var new_velX2 = (velX2 * (mass2 - mass1) + (2 * mass1 * velX1)) / mass_sum;

  var new_velY1 = (velY1 * (mass1 - mass2) + (2 * mass2 * velY2)) / mass_sum;

  var new_velY2 = (velY2 * (mass2 - mass1) + (2 * mass1 * velY1)) / mass_sum;

  vector_array[0] = new_velX1;

  vector_array[0] = new_velX2;

  vector_array[1] = new_velY1;

  vector_array[1] = new_velY2;

  circle_array.x += new_velX1;

  circle_array.y += new_velY1;

  circle_array.x += new_velX2;

  circle_array.y += new_velY2;

  }

  }

  }

  gonzo=dist;

  

  var kallboyut:Number = the_kall.width +1;

  var kallvector:Number = 7;

  var ikiarray:Number = 9;

  //Kall to ball collisions

  for(var s:Number = 0; s < topisler; s++){

  var t_pos:Point = new Point(the_kall.x, the_kall.y)

  for(var t:Number = s + 1; t < topisler; t++){

  var distf = Point.distance(t_pos, new Point(circle_array.x, circle_array.y));

  if( distf < ((the_kall.width * 0.50) + (circle_array.width * 0.50)) )

  {

  dmm.text = "touched";

  //elastic response

  kao +=0;

    kao2 +=0;

  

  drag=false;

  mouseuo=false;

  }

  }

  }

}

stage.addEventListener(MouseEvent.MOUSE_DOWN,mousePressed);

function mousePressed(e:MouseEvent) {

  the_kall = new kall();

  the_kall.x=mouseX;

  the_kall.y=mouseY;

  addChild(the_kall)

  drag=true;

  mouseuo=true;

  stage.addEventListener(MouseEvent.MOUSE_UP,mousebrk)

}

stage.addEventListener(Event.ENTER_FRAME,Update);

function Update(e:Event) {

  

  

  if(drag==true){

  the_kall.width =kao;

  the_kall.height =kao2;

     kao ++;

    kao2 ++;

  }

  

  

  if(drag==false){

  removeChild(the_kall)

  }

  

  

   if(drag==false && mouseuo==true){

  mcKallCont = new MovieClip () ;

  stage.addChild(mcKallCont);

  mcKall = new boru ();

  mcKallCont.x =the_kall.x ;

  mcKallCont.y = the_kall.y;

  mcKall.width =the_kall.width;

  mcKall.height =the_kall.height;

  mcKallCont.addChild ( mcKall );

  mouseuo=false;

  topisler +=1;

  removeChild(the_kall)

  }

}

  

  

  

  

  

stage.addEventListener(MouseEvent.MOUSE_UP,mousebrk);

function mousebrk(e:MouseEvent) {

  drag=false;

  kao =1;

  kao2 =1;

  //for ( var p = 0; p < mcKallCont.numChildren; p++ )

  //var mcKall1:* = mcKallCont.getChildAt( p );

  

}

stage.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoved);

function mouseMoved(e:MouseEvent) {

  if(drag==true){

  the_kall.x=mouseX;

  the_kall.y=mouseY;

  

  }

}

This topic has been closed for replies.

1 reply

kglad
Community Expert
Community Expert
June 12, 2017

the first problem i see is init() is called repeatedly and that doesn't appear correct.  is there some reason you're executing init() more than once?

KucuKekoAuthor
Inspiring
June 12, 2017

No reason is not that.I control with topyap class.

kglad
Community Expert
Community Expert
June 12, 2017

remove that enterframe listener then and see if that fixes the problem.