Перестаёт реагировать впринципе. Вообще-то это кнопка должна отреагировать только один раз за игру (кнопка рестарт гейм).

Код AS3:
private function game_over_func():void{
paused=true;
pause_button.removeEventListener(MouseEvent.MOUSE_UP,pause_game);
//head.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
//stage.removeEventListener(KeyboardEvent.KEY_DOWN, reactToKey);
//trace("game over");
game_over=new Game_over();
game_over.x=300;
game_over.y=100;
sprite.addChild(game_over);
new_game=new New_game();
new_game.x=290;
new_game.y=200;
sprite.addChild(new_game);
new_game.addEventListener(MouseEvent.MOUSE_UP,onBtnUp);
}
private function onBtnUp(event:MouseEvent):void{
new_game.removeEventListener(MouseEvent.MOUSE_UP, onBtnUp);
var myEvent:MyEvent;
//we set the type of the event we want to dispatch.
myEvent = new MyEvent( "onEndGame" );
//We set the customMessage for display
myEvent.customMessage = "Games is finnished...!";
//Finally we dispatch to notice the app one contact was removed
dispatchEvent(myEvent)
}
Что странно, есть ещё пара кнопок (плей, пауз), которые написаны один к одному также, и с ними нет проблем.
Вот весь код игры.

Код AS3:
package{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
public class Game extends EventDispatcher{
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;
private var sun:Sunny;
private var palm:Palm;
private var score:int=0;
private var myText:TextField;
private var myFormat:TextFormat;
private var play_pause:Play_pause;
private var pause_button:Pause_button;
private var play_button:Play_button;
private var game_over:Game_over;
private var new_game:New_game;
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(0xFFFFFF);
sprite.graphics.drawRect(0, 0, 600,600);
sprite.graphics.endFill();
sprite.graphics.lineStyle(6,0x000000);
sprite.graphics.beginFill(0xABDCF8);
sprite.graphics.drawRect(0, 0, 600,560);
sprite.graphics.endFill();
sun=new Sunny();
sprite.addChild(sun);
sun.x=100;
sun.y=100;
sun.scaleX = .5;
sun.scaleY = .5;
sun.alpha=0.5;
sun.stop();
palm=new Palm();
sprite.addChild(palm);
palm.x=260;
palm.y=514.5;
palm.scaleX = .88;
palm.alpha=0.7;
palm.stop();
play_pause = new Play_pause();
play_pause.x=100;
play_pause.y=580;
sprite.addChild(play_pause);
play_button=new Play_button();
play_button.x=180;
play_button.y=580;
sprite.addChild(play_button);
play_button.addEventListener(MouseEvent.MOUSE_UP,un_pause_game);
myText = new TextField();
myText.width = 80;
myText.height = 25;
myText.border = true;
myText.background= true;
myText.backgroundColor= 0xBFC7CA;
myText.x = 500;
myText.y = 567;
myText.selectable = false;
myFormat = new TextFormat("Arial", 20, 0x000000, true);
myText.defaultTextFormat = myFormat;
sprite.addChild(myText);
myText.text = "0";
map=new Array(31);
for (var i:int = 0; i < 31; i++) {
map[i] = new Array(31);
}
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;
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>550){
sprite.removeChild(head);
moveSnake(x_,y_);
game_over_func();
return;
}
if (map[(head.x-10)/20][(head.y-10)/20]==1){
moveSnake(x_,y_);
game_over_func();
return;
}
if (map[(head.x-10)/20][(head.y-10)/20]==2){//food..
var segment:Snake_body=new Snake_body();
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();
score+=10;
myText.text=score.toString();
}
else
moveSnake(x_,y_);
}
}
private function moveSnake(x_:int,y_:int):void{
if (snake.length>0){
map[(snake[0].x-10)/20][(snake[0].y-10)/20]=0;
map[(x_-10)/20][(y_-10)/20]=1;
var segment:Snake_body=new Snake_body();
segment.x=x_;
segment.y=y_;
map[(x_-10)/20][(y_-10)/20]=1;
snake.push(segment);
sprite.addChild(segment);
sprite.removeChild(snake[0]);
snake.shift();
}
}
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 place_food():void{
var x_:int;
var y_:int;
do{
x_= Math.round((Math.random()*29));
y_= Math.round((Math.random()*27));
}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 pause_game(event:MouseEvent):void{
paused=true;
sun.stop();
palm.stop();
pause_button.removeEventListener(MouseEvent.MOUSE_UP,pause_game);
sprite.removeChild(pause_button);
play_button=new Play_button();
play_button.x=180;
play_button.y=580;
sprite.addChild(play_button);
play_button.addEventListener(MouseEvent.MOUSE_UP,un_pause_game);
}
private function un_pause_game(event:MouseEvent):void{
stage.focus=stage;
play_button.removeEventListener(MouseEvent.MOUSE_UP,un_pause_game);
sprite.removeChild(play_button);
pause_button=new Pause_button();
pause_button.x=180;
pause_button.y=580;
sprite.addChild(pause_button);
pause_button.addEventListener(MouseEvent.MOUSE_UP,pause_game);
sun.play();
palm.play();
paused=false;
}
private function game_over_func():void{
paused=true;
pause_button.removeEventListener(MouseEvent.MOUSE_UP,pause_game);
//head.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
//stage.removeEventListener(KeyboardEvent.KEY_DOWN, reactToKey);
//trace("game over");
game_over=new Game_over();
game_over.x=300;
game_over.y=100;
sprite.addChild(game_over);
new_game=new New_game();
new_game.x=290;
new_game.y=200;
sprite.addChild(new_game);
new_game.addEventListener(MouseEvent.MOUSE_UP,onBtnUp);
}
private function onBtnUp(event:MouseEvent):void{
new_game.removeEventListener(MouseEvent.MOUSE_UP, onBtnUp);
var myEvent:MyEvent;
//we set the type of the event we want to dispatch.
myEvent = new MyEvent( "onEndGame" );
//We set the customMessage for display
myEvent.customMessage = "Games is finnished...!";
//Finally we dispatch to notice the app one contact was removed
dispatchEvent(myEvent)
}
}
}

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

Код AS3:
package{
import flash.events.Event;
public class MyEvent extends Event{
public static const ON_END_GAME:String = "onEndGame";
private var myEvent:MyEvent;
public var customMessage:String = "";
public function MyEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false){
//we call the super class Event
super(type, bubbles, cancelable);
}
}
}
Добавлено через 55 минут
Спасибо, уже разобралась. Был баг в коде, не связанный с кнопкой. Исправила.