![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2015
Сообщений: 64
|
Доброго времени суток!!!
Есть главный класс Main. В основном конструкторе класса вызывается функция размещающая кнопки на сцене. Затем для каждой кнопки создается слушатель событий.В функции ссылающейся на слушатель кнопки buildVertical(далее речь пойдет о ней, т.к. для других кнопок я ещё ничего не сделал) создается экземпляр класса BuildVerticalClass. К этому экземпляру привязывается слушатель события. package cellAndRoadPG{ import cellAndRoadPG.cellPG.*; import cellAndRoadPG.roadPG.*; import cellAndRoadPG.gameButtonsPG.*; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class Main extends MovieClip{ //в главном конструкторе класса вызовем функции генерации карты. internal var main = this;//переменная для обращения к классу Main public function Main (){ fGenerationlocationCell(); fPlaceButtons(); stage.addEventListener(MouseEvent.MOUSE_DOWN, fAllowBuildRoad); } //какой-то код internal var build:Boolean = false; //разместим кнопки на игровой панели и создадим для каждой из них обработчик событий. internal function fPlaceButtons(){ var buildVertical:BuildVerticalClass = new BuildVerticalClass(); main.addChild(buildVertical); buildVertical.addEventListener(MouseEvent.CLICK, fBuildVertical); function fBuildVertical(e:MouseEvent){ var roadVertical:RoadVerticalClass = new RoadVerticalClass(); roadVertical.x = mouseX; roadVertical.y = mouseY; main.addChild(roadVertical); roadVertical.startDrag(); roadVertical.addEventListener(Event.ENTER_FRAME, fCheckHitWithCell);/*функция ищущая пересечение дороги и клетки, и размещающая дорогу в случае соблюдения условий описанных внутри функции*/ } var buildHorizontal:BuildHorizontalClass = new BuildHorizontalClass(); main.addChild(buildHorizontal); buildHorizontal.addEventListener(MouseEvent.CLICK, fBuildHorizontal); function fBuildHorizontal(e:MouseEvent){ var roadHorizontal:RoadHorizontalClass = new RoadHorizontalClass(); roadHorizontal.x = mouseX; roadHorizontal.y = mouseY; main.addChild(roadHorizontal); roadHorizontal.startDrag(); } var buildRightUp:BuildRightUpClass = new BuildRightUpClass(); main.addChild(buildRightUp); buildRightUp.addEventListener(MouseEvent.CLICK, fBuildRightUp); function fBuildRightUp(e:MouseEvent){ var roadRightUp:RoadRightUpClass = new RoadRightUpClass(); roadRightUp.x = mouseX; roadRightUp.y = mouseY; main.addChild(roadRightUp); roadRightUp.startDrag(); } var buildRightDown:BuildRightDownClass = new BuildRightDownClass(); main.addChild(buildRightDown); buildRightDown.addEventListener(MouseEvent.CLICK, fBuildRightDown); function fBuildRightDown(e:MouseEvent){ var roadRightDown:RoadRightDownClass = new RoadRightDownClass(); roadRightDown.x = mouseX; roadRightDown.y = mouseY; main.addChild(roadRightDown); roadRightDown.startDrag(); } var buildLeftDown:BuildLeftDownClass = new BuildLeftDownClass(); main.addChild(buildLeftDown); buildLeftDown.addEventListener(MouseEvent.CLICK, fBuildLeftDown); function fBuildLeftDown(e:MouseEvent){ var roadLeftDown:RoadLeftDownClass = new RoadLeftDownClass(); roadLeftDown.x = mouseX; roadLeftDown.y = mouseY; main.addChild(roadLeftDown); roadLeftDown.startDrag(); } var buildLeftUp:BuildLeftUpClass = new BuildLeftUpClass(); main.addChild(buildLeftUp); buildLeftUp.addEventListener(MouseEvent.CLICK, fBuildLeftUp); function fBuildLeftUp(e:MouseEvent){ var roadLeftUp:RoadLeftUpClass = new RoadLeftUpClass(); roadLeftUp.x = mouseX; roadLeftUp.y = mouseY; main.addChild(roadLeftUp); roadLeftUp.startDrag(); } } function fCheckHitWithCell(e:Event){ var road_vertical = e.currentTarget; if(build == true){ road_vertical.stopDrag(); build = false; } } //разрешить строить дорогу. private function fAllowBuildRoad(e:MouseEvent){ build = true; } При первом нажатии на кнопку buildVertical создается экземпляр класса BuildVerticalClass и сразу-же срабатывает функция привязанная к этому экземпляру. Далее, почему-то срабатывают все кнопки, т.е. выполняется функция прописанная для экземпляра класса BuildVerticalClass и ссылающаяся на этот экземпляр с помощью метода e.currentTarget и эта функция срабатывает для других экземпляров других классов. Кто-нибудь может объяснить почему так происходит. Последний раз редактировалось бакуард; 04.07.2015 в 17:29. |
![]() |
Часовой пояс GMT +4, время: 10:11. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|