Skip to main content
Known Participant
August 18, 2016
Answered

Some balls are flood in to the floor

  • August 18, 2016
  • 3 replies
  • 714 views

  stop();
//ARRAYS
var ballArray:Array = new Array();

//ADD BALLS
var mediumBall1f2:Ball = new Ball  ;
ballArray
.push(mediumBall1f2);
this.addChild(mediumBall1f2);
mediumBall1f2
.ballX = 3;
mediumBall1f2
.ballY = 8;
mediumBall1f2
.x = 300;
mediumBall1f2
.y = 250;
mediumBall1f2
.width = 120;
mediumBall1f2
.height = 120;

var mediumBall1f3:Ball = new Ball  ;
ballArray
.push(mediumBall1f3);
this.addChild(mediumBall1f3);
mediumBall1f3
.ballX = -3;
mediumBall1f3
.ballY = 8;
mediumBall1f3
.x = 200;
mediumBall1f3
.y = 350;
mediumBall1f3
.width = 140;
mediumBall1f3
.height = 140;

var mediumBall1f4:Ball = new Ball  ;
ballArray
.push(mediumBall1f4);
this.addChild(mediumBall1f4);
mediumBall1f4
.ballX = -3;
mediumBall1f4
.ballY = 8;
mediumBall1f4
.x = 300;
mediumBall1f4
.y = 250;
mediumBall1f4
.width = 50;
mediumBall1f4
.height = 50;

var mediumBall1f5:Ball = new Ball  ;
ballArray
.push(mediumBall1f5);
this.addChild(mediumBall1f5);
mediumBall1f5
.ballX = -3;
mediumBall1f5
.ballY = 8;
mediumBall1f5
.x = 400;
mediumBall1f5
.y = 350;
mediumBall1f5
.width = 80;
mediumBall1f5
.height = 80;

var mediumBall1f6:Ball = new Ball  ;
ballArray
.push(mediumBall1f6);
this.addChild(mediumBall1f6);
mediumBall1f6
.ballX = 3;
mediumBall1f6
.ballY = 8;
mediumBall1f6
.x = 400;
mediumBall1f6
.y = 320;
mediumBall1f6
.width = 30;
mediumBall1f6
.height = 30;

var mediumBall1f7:Ball = new Ball  ;
ballArray
.push(mediumBall1f7);
this.addChild(mediumBall1f7);
mediumBall1f7
.ballX = 3;
mediumBall1f7
.ballY = 8;
mediumBall1f7
.x = 400;
mediumBall1f7
.y = 230;

var mediumBall1f8:Ball = new Ball  ;
ballArray
.push(mediumBall1f8);
this.addChild(mediumBall1f8);
mediumBall1f8
.ballX = 3;
mediumBall1f8
.ballY = 8;
mediumBall1f8
.x = 400;
mediumBall1f8
.y = 240;

var mediumBall1f9:Ball = new Ball  ;
ballArray
.push(mediumBall1f9);
this.addChild(mediumBall1f9);
mediumBall1f9
.ballX = 3;
mediumBall1f9
.ballY = 8;
mediumBall1f9
.x = 400;
mediumBall1f9
.y = 110;


//FLOOR
var downArray:Array = new Array();

for (var dA:int = numChildren - 1; dA>= 0; dA--)
{
  
var childdA:DisplayObject = getChildAt(dA);
  
if (childdA.name == "downfloor")
  
{
  downArray
.push(MovieClip(childdA));
  
}
}

var upArray:Array = new Array();

for (var uA:int = numChildren - 1; uA>= 0; uA--)
{
  
var childuA:DisplayObject = getChildAt(uA);
  
if (childuA.name == "upfloor")
  
{
  upArray
.push(MovieClip(childuA));
  
}
}

var rightArray:Array = new Array();

for (var rA:int = numChildren - 1; rA>= 0; rA--)
{
  
var childrA:DisplayObject = getChildAt(rA);
  
if (childrA.name == "rightfloor")
  
{
  rightArray
.push(MovieClip(childrA));
  
}
}

var leftArray:Array = new Array();

for (var lA:int = numChildren - 1; lA>= 0; lA--)
{
  
var childlA:DisplayObject = getChildAt(lA);
  
if (childlA.name == "leftfloor")
  
{
  leftArray
.push(MovieClip(childlA));
  
}
}

//USE ONCE
stageclear
.visible = false;
stageclear
.gotoAndStop(1);

stage
.addEventListener(Event.ENTER_FRAME,ballLoop);
function ballLoop(evt:Event)
{
  
//BALL
  
for (var j = 0; j<ballArray.length; j++)
  
{

  
var ball:Ball = ballArray[j] as Ball;
  ball
.ballY--;
  ball
.y -=  ball.ballY;
  ball
.x -=  ball.ballX;
  
if (player.hitTestObject(ball))
  
{

  ball
.y = 600;
  
}
  
if(ball.x - ball.width/2 < 0)
  
{
  ball
.ballX = -3;
  
}
  
if(ball.x + ball.width/2 > 800)
  
{
  ball
.ballX = 3;
  
}
  
if(ball.y + ball.height/2 > 384.45)
  
{
  ball
.ballY = 20;
  
}
  
if(ball.y - ball.height/2 < 0)
  
{
  ball
.ballY = -2;
  
}
  
for (var d = 0; d<downArray.length; d++)
  
{
  
var down:DownFloor = downArray[d] as DownFloor;
  
if (ball.hitTestObject(down))
  
{
  ball
.ballY = 20;
  
}
  
}
  
for (var r = 0; r<rightArray.length; r++)
  
{
  
var right:RightFloor = rightArray[r] as RightFloor;
  
if (ball.hitTestObject(right))
  
{
  ball
.ballX = 3;
  
}
  
}
  
for (var l = 0; l<leftArray.length; l++)
  
{
  
var left:LeftFloor = leftArray[l] as LeftFloor;
  
if (ball.hitTestObject(left))
  
{
  ball
.ballX = -3;
  
}
  
}
  
for (var u = 0; u<upArray.length; u++)
  
{
  
var up:UpFloor = upArray[u] as UpFloor;
  
if (ball.hitTestObject(up))
  
{
  ball
.ballY = -2;
  
}
  
}
  
if (ball.y >= 600)
  
{
  ball
.parent.removeChild(ball);
  ballArray
.splice(j,1);
  
}
  
if (ballArray.length <= 0)
  
{
  stageclear
.visible = true;
  stageclear
.gotoAndPlay(1);
  
}
  
}
  
if(stageclear.currentFrame == stageclear.totalFrames)
  
{
  stage
.removeEventListener(Event.ENTER_FRAME,ballLoop);
  
MovieClip(this.root).gotoAndPlay(1, "Scene 2");
  
}
}

This topic has been closed for replies.
Correct answer kglad

this is because i have to many floors and i just want to use less code.


each should have a different name.  eg, downfloor_1, downfloor_2...,upfloor_1,...,leftfloor_1 etc.  you could then use:

var i:int;

for (i = numChildren - 1; i>= 0; i--)
{
  
var childdA:DisplayObject = getChildAt(i);
  
if (childdA.name.indexOf("downfloor")>-1)
  
{
  downArray
.push(MovieClip(childdA));
  
}

if (childdA.name.indexOf("upfloor")>-1)
  
{
  upArray
.push(MovieClip(childdA));
  
}

if (childdA.name.indexOf("leftfloor")>-1)
  
{
  leftArray
.push(MovieClip(childdA));
  
}

if (childdA.name.indexOf("rightfloor")>-1)
  
{
  rightArray
.push(MovieClip(childdA));
  
}

}

3 replies

Known Participant
August 19, 2016

It works better thank you!!

kglad
Community Expert
Community Expert
August 19, 2016

you're welcome.

Known Participant
August 18, 2016

why some balls are sink in to floors and some others not?

kglad
Community Expert
Community Expert
August 18, 2016

the first error i see is it looks like you have more than one object with the same instance name.

Known Participant
August 18, 2016

this is because i have to many floors and i just want to use less code.

kglad
Community Expert
Community Expert
August 18, 2016

do you have a question?

rezun8
Inspiring
August 18, 2016

hate when my balls flood to the floor