Добрый день! Помогите разобраться с багом! Сижу над ним уже 12 часов. Баг в игре змейка. Всё работает хорошо. Кроме того, как змейка сталкивается с левой частью экрана- вылетает непонятная ошибка. Самое странное, что она вылетает после трейс game over , после чего по идее ничего не должно случаться. Error #1010: A term is undefined and has no properties
Заранее большое спасибо!

Код AS3:
package{
import flash.display.Sprite;
import flash.events.Event;
[SWF(width=600,height=600,backgroundColor=0XD3D1D1,frameRate=5)]
public class snakeGame extends Sprite{
private var sprite:Sprite;
private var game:Game;
public function snakeGame(){
game=new Game(stage);
}
}
}

Код AS3:
package{
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.KeyboardEvent;
public class Game{
private var head:Snake_head;
private var map:Array;
private var turnQueue:Array;
private var direction:uint=40;
private var sprite:Sprite;
private var stage:Stage;
private var paused:Boolean=true;
private var snake:Vector.<Snake_body>;
private var bonus:Bonus;
public function Game(stage:Stage){
bonus = new Bonus();
snake = new Vector.<Snake_body>();
this.stage=stage;
sprite=new Sprite();
stage.addChild(sprite);
sprite.graphics.lineStyle(6,0x000000);
sprite.graphics.beginFill(0x0095D3);
sprite.graphics.drawRect(0, 0, 600,600);
sprite.graphics.endFill();
map=new Array(31);
for (var i:int = 0; i < 31; i++) {
map[i] = new Array(31);
}
stage.addEventListener(Event.ACTIVATE,onActivate);
turnQueue=new Array();
stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToKey);
head=new Snake_head;
sprite.addChild(head);
head.x=310;
head.y=10;
map[15][0]=head;
place_food();
head.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(event:Event):void{
if (!paused){
var x_:int=head.x;
var y_:int=head.y;
var segment:Snake_body=new Snake_body();
if (turnQueue.length!=0)
direction=turnQueue.shift();
if (direction==37){
head.x-=20;
}
if (direction==38){
head.y-=20;
}
if (direction==39){
head.x+=20;
}
if (direction==40){
head.y+=20;
}
if(head.x<10 || head.x>590 || head.y<10 || head.y>590)
game_over();
if (map[(head.x-10)/20][(head.y-10)/20]==1)
game_over();
if (map[(head.x-10)/20][(head.y-10)/20]==2){
sprite.removeChild(bonus);
segment.x=x_;
segment.y=y_;
map[(x_-10)/20][(y_-10)/20]=1;
snake.push(segment);
sprite.addChild(segment);
place_food();
}
else{
if (snake.length>0) map[(x_-10)/20][(y_-10)/20]=1;
if (snake.length>0) map[(snake[0].x-10)/20][(snake[0].y-10)/20]=0;
for(var i:int=snake.length-1;i>-1;i--){
var tmp_x:int=snake[i].x;
var tmp_y:int=snake[i].y;
snake[i].x=x_;
snake[i].y=y_;
x_=tmp_x;
y_=tmp_y;
}
}
}
}
private function reactToKey(event:KeyboardEvent):void{
var keyCode:uint=event.keyCode;
if ( Math.abs(direction - keyCode)!=2 &&
keyCode > 36 && keyCode < 41 && keyCode!=turnQueue[turnQueue.length-1]){
turnQueue.push(keyCode);
} // arrow keys pressed (37 = left, 38 = up, 39 = right, 40 = down)...
}
private function onDeactivate(e:Event):void {
stage.removeEventListener(Event.DEACTIVATE,onDeactivate);
stage.addEventListener(Event.ACTIVATE,onActivate);
paused=true;
}
private function onActivate(e:Event):void {
stage.removeEventListener(Event.ACTIVATE,onActivate);
stage.addEventListener(Event.DEACTIVATE,onDeactivate);
paused=false;
}
private function place_food():void{
var x_:int;
var y_:int;
do{
x_= Math.round((Math.random()*29));
y_= Math.round((Math.random()*29));
}while(map[x_][y_]==1 || (x_*20+10==head.x && y_*20+10==head.y) );
bonus.x=x_*20+10;
bonus.y=y_*20+10;
map[x_][y_]=2;
sprite.addChild(bonus);
}
private function game_over():void{
paused=true;
head.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
stage.removeEventListener(KeyboardEvent.KEY_DOWN, reactToKey);
trace("game over");
}
}
}