Bugert
06.09.2013, 23:55
Есть такой код:
package
{
import flash.display.*;
import flash.events.*;
import fl.controls.*
public class Main extends Sprite //объявляем основной класс
{
public var moveObject1: MyCirc;
public var moveObject2: MyRect;
public var myButton1: Button;
public var btnPause: Button;
private var pauseFlag: Boolean = true;
private var currentForm: Sprite;
public function Main():void
{
moveObject1 = new MyCirc(stage);
moveObject2 = new MyRect(stage);
myButton1 = new Button();
btnPause = new Button();
addChild(myButton1);
myButton1.label = "Change";
myButton1.move(260, 125);
addChild(btnPause);
btnPause.label = "On";
btnPause.move(205, 100);
currentForm = moveObject1;
addChild(moveObject1);
currentForm.x = stage.stageWidth / 2;
currentForm.y = stage.stageHeight / 2;
moveObject2.x = stage.stageWidth / 2;
moveObject2.y = stage.stageHeight / 2;
myButton1.addEventListener(MouseEvent.CLICK, replaceObj);
btnPause.addEventListener(MouseEvent.CLICK, onBtPause);
}
//Определяем действия для кнопок основного класса Main:
public function replaceObj(e:MouseEvent): void
{
if (stage.contains(moveObject1))
{
removeChild(moveObject1);
addChild(moveObject2);
currentForm = moveObject2;
}
else if (stage.contains(moveObject2))
{
removeChild(moveObject2);
addChild(moveObject1);
currentForm = moveObject1;
}
}
///////////////////////////////////////////////////
public function onBtPause(e:MouseEvent):void
{
if (pauseFlag)
{
//если кнопка нажата
(currentForm as PreObject).stopObj();
pauseFlag = false; //сбрасываем флаг, тк отжали кнопку
btnPause.label = "Off";
}
else
{
(currentForm as PreObject).startObj();
pauseFlag = true; //устанавливаем флаг, тк нажали кнопку
btnPause.label = "On";
}
}
// ================================================================================ //
}
}
Плюс ещё класс PreObject, описывающий фигуру и её положение в пространстве и включающий событие Enter_Frame. А также наследуемые классы MyCirc -- круг и MyRect -- квадрат. Одну фигуру можно превращать в другую, нажатием на кнопку. А также запускать и останавливать движение другой кнопкой. Но вот проблема...если я останавливаю движение круга и делаю превращение в квадрат, то на квадрат остановка движения не распространяется -- он двигается. И наоборот. А нужно, чтобы фигура стопарилась, а после превращения не нужно было стопарить и вторую фигуру. Как это сделать?
package
{
import flash.display.*;
import flash.events.*;
import fl.controls.*
public class Main extends Sprite //объявляем основной класс
{
public var moveObject1: MyCirc;
public var moveObject2: MyRect;
public var myButton1: Button;
public var btnPause: Button;
private var pauseFlag: Boolean = true;
private var currentForm: Sprite;
public function Main():void
{
moveObject1 = new MyCirc(stage);
moveObject2 = new MyRect(stage);
myButton1 = new Button();
btnPause = new Button();
addChild(myButton1);
myButton1.label = "Change";
myButton1.move(260, 125);
addChild(btnPause);
btnPause.label = "On";
btnPause.move(205, 100);
currentForm = moveObject1;
addChild(moveObject1);
currentForm.x = stage.stageWidth / 2;
currentForm.y = stage.stageHeight / 2;
moveObject2.x = stage.stageWidth / 2;
moveObject2.y = stage.stageHeight / 2;
myButton1.addEventListener(MouseEvent.CLICK, replaceObj);
btnPause.addEventListener(MouseEvent.CLICK, onBtPause);
}
//Определяем действия для кнопок основного класса Main:
public function replaceObj(e:MouseEvent): void
{
if (stage.contains(moveObject1))
{
removeChild(moveObject1);
addChild(moveObject2);
currentForm = moveObject2;
}
else if (stage.contains(moveObject2))
{
removeChild(moveObject2);
addChild(moveObject1);
currentForm = moveObject1;
}
}
///////////////////////////////////////////////////
public function onBtPause(e:MouseEvent):void
{
if (pauseFlag)
{
//если кнопка нажата
(currentForm as PreObject).stopObj();
pauseFlag = false; //сбрасываем флаг, тк отжали кнопку
btnPause.label = "Off";
}
else
{
(currentForm as PreObject).startObj();
pauseFlag = true; //устанавливаем флаг, тк нажали кнопку
btnPause.label = "On";
}
}
// ================================================================================ //
}
}
Плюс ещё класс PreObject, описывающий фигуру и её положение в пространстве и включающий событие Enter_Frame. А также наследуемые классы MyCirc -- круг и MyRect -- квадрат. Одну фигуру можно превращать в другую, нажатием на кнопку. А также запускать и останавливать движение другой кнопкой. Но вот проблема...если я останавливаю движение круга и делаю превращение в квадрат, то на квадрат остановка движения не распространяется -- он двигается. И наоборот. А нужно, чтобы фигура стопарилась, а после превращения не нужно было стопарить и вторую фигуру. Как это сделать?