Имею 5 классов в скрипте.
Соединил их воедино взаимодействий между ними ОЧЕНЬ много.
но при запуске появилась ошибка

Код:
Переполнение буфера at Collision()
at Loop()
at Mapcreate()
at Collision()
at Loop()
at Mapcreate()
код привожу ниже начиная с базового класса.
Я понимаю что я нуб, но всё же , если найдёться кто - нибудь кто разберёт это ... то постарайтесь мне объяснить , что я не так сделал...

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.utils.*;
import mx.core.*;
public class Game1 extends Sprite
{
public var spr1:Sprite = new Sprite;
public var spr2:Shape = new Shape;
public var dnco:Shape = new Shape;
public var upco:Shape = new Shape;
public var rico:Shape = new Shape;
public var leco:Shape = new Shape;
public var map:Mapcreate = new Mapcreate();
public function Game1()
{
spr1.graphics.beginFill(0x00412A, 1);
spr1.graphics.drawRect(-300, 0, 1800, 400);
spr1.graphics.endFill();
addChild(spr1);
creation();
addChild(spr2);
makesen();
addChild(leco);
addChild(dnco);
addChild(upco);
addChild(rico);
addChild(map.verwal1)
}
public function creation():void
{
spr2.graphics.beginFill(0x00AAFF, 0.5);
spr2.graphics.drawRect(0, 0, 30, 50);
spr2.graphics.endFill();
spr2.x = 30;
spr2.y = 300;
spr2.width=30;
spr2.height=50;
}
public function makesen():void
{
dnco.graphics.beginFill(0x222222, 0.5);
dnco.graphics.drawRoundRect(0, 0, 20, 5, 5, 5);
dnco.graphics.endFill();
dnco.x = spr2.x+5;
dnco.y = spr2.y+45;
dnco.width=20;
dnco.height=5;
upco.graphics.beginFill(0x222222, 0.5);
upco.graphics.drawRoundRect(0, 0, 20, 5, 5, 5);
upco.graphics.endFill();
upco.x = spr2.x+5;
upco.y = spr2.y;
upco.width=20;
upco.height=5;
rico.graphics.beginFill(0x222222, 0.5);
rico.graphics.drawRoundRect(0, 0, 5, 45, 5, 5);
rico.graphics.endFill();
rico.x = spr2.x+25;
rico.y = spr2.y+2;
rico.width=5;
rico.height=45;
leco.graphics.beginFill(0x222222, 0.5);
leco.graphics.drawRoundRect(0, 0, 5, 45, 5, 5);
leco.graphics.endFill();
leco.x = spr2.x;
leco.y = spr2.y+2;
leco.width=5;
leco.height=45;
}
}
}

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.KeyboardEvent;
import flash.ui.*;
public dynamic class Movement
{
public var collision:Collision;
public var keyple:Boolean = false;
public var keypri:Boolean = false;
public var jump:Boolean = false;
public var jmpc:Number = 0;
public var main:Game1;
public function Movement()
{
main.addEventListener(KeyboardEvent.KEY_DOWN, onkey);
main.addEventListener(KeyboardEvent.KEY_UP, onup);
}
public function onup(event:KeyboardEvent):void
{
if(event.keyCode == 39)
{
keypri = false;
}
if(event.keyCode == 37)
{
keyple = false;
}
}
public function onkey(event:KeyboardEvent):void
{
if((event.keyCode == Keyboard.RIGHT) && (main.spr2.x <= 594) && (collision.colri == false))
{
(main.spr2.x=(main.spr2.x+2));
keypri=true;
}
if((event.keyCode == Keyboard.LEFT) && (main.spr2.x >= 0) && (collision.colle == false))
{
(main.spr2.x=(main.spr2.x-2));
keyple=true;
}
if((event.keyCode == Keyboard.UP) && (jump == false) && (collision.coldn == true) && (collision.colup == false))
{
jmpc=(main.spr2.y-40);
jump=true;
jumpanim();
}
function jumpanim():void
{
if((jump == true) && (collision.coldn == true))
{
(jmpc=(main.spr2.y-40));
}
if((jump == true) && (jmpc>main.spr2.y) && (collision.coldn == true))
{
jump=false;
}
}
}
}
}

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.KeyboardEvent;
import flash.ui.*;
public dynamic class Collision
{
public var main:Game1;
public var map:Mapcreate = new Mapcreate();
public var i:int = 0;
public var coldn:Boolean = false;
public var colup:Boolean = false;
public var colri:Boolean = false;
public var colle:Boolean = false;
public function Collision()
{
super();
}
public function collis():void
{
i = 0;
while(i < (map.level.length))
{
if(main.dnco.hitTestObject(map.level[i]) == true)
{
coldn = true;
}
if(main.rico.hitTestObject(map.level[i]) == true)
{
colri = true;
}
if(main.leco.hitTestObject(map.level[i]) == true)
{
colle = true;
}
if(main.upco.hitTestObject(map.level[i]) == true)
{
colup = true;
}
i++;
}
}
}
}

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.ui.*;
import flash.utils.*;
public dynamic class Mapcreate extends Sprite
{
public var main:Game1;
public var loop:Loop = new Loop();
public var level:Array = [];
public var verwal1:Sprite = new Sprite;
public function Mapcreate()
{
super();
verwal1.addEventListener(Event.ENTER_FRAME, loop.loop);
blocks();
}
public function blocks():void
{
verwal1.graphics.beginFill(0x222222, 0.5);
verwal1.graphics.drawRoundRect(0, 0, 600, 50, 15, 15);
verwal1.graphics.endFill();
verwal1.x=0;
verwal1.y=350;
addChild(verwal1);
level.unshift(verwal1);
}
}
}

Код AS3:
package
{
import flash.display.*;
import flash.events.*;
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.KeyboardEvent;
import flash.ui.*;
public dynamic class Loop
{
public var main:Game1;
public var mov:Movement;
public var collision:Collision = new Collision();
public function Loop()
{
super();
}
public function loop(event:Event):void
{
collision.collis();
if((main.spr2.x > 0) && (collision.coldn == false) && (mov.jump == false))
{
main.spr2.y=(main.spr2.y + 4);
}
else if((mov.keypri == true) && (main.spr2.x >= 0) && (main.spr2.x <= 620) && (collision.colri == false))
{
(main.spr2.x=(main.spr2.x+4));
}
else if((mov.keyple == true) && (main.spr2.x >= 0) && (main.spr2.x <= 620) && (collision.colle == false))
{
(main.spr2.x=(main.spr2.x-4));
}
else if((mov.jump == true) && (main.spr2.y<mov.jmpc))
{
mov.jump = false;
}
else if(mov.jump == true)
{
(main.spr2.y=(main.spr2.y-8));
}
if(collision.colle == true)
{
mov.jump=false;
mov.keypri=false;
mov.keyple=false;
while(collision.colle == false)
{
main.spr2.x=(main.spr2.x+4);
}
}
else if(collision.colri == true)
{
mov.jump=false;
mov.keypri=false;
mov.keyple=false;
while(collision.colri == false)
{
main.spr2.x=(main.spr2.x-4);
}
}
}
}
}