Мои искания в создании флеш-стратегии (Часть 3. Привязка. Реализация. Часть 1)
Запись от EndoCrinologist размещена 27.10.2011 в 18:06
Обновил(-а) EndoCrinologist 28.10.2011 в 09:42
Обновил(-а) EndoCrinologist 28.10.2011 в 09:42
Для начала нам нужно разобрать в одной вещи.
Функция startDrag();, которую мы использовали в своей игре, прикрепляет к мыши наш объект и он следует за ней, совсем не следя за нашими ячейками поля. Поэтому, мы немного подправим нашу функцию.
А в каком направлении мы её подправим? А в таком, что мы добавим переменную, следящую за тем, взят ли объект с места или нет. То есть, переменная будет принимать значение true (взято) и false (оно на панели). Но для начала еще кое-что.
У нас есть 2 способа, чтобы визуально определять, над каким квадратом находится наше сооружение:
1) событие obj1.onPress сделает черный квадрат, который будет двигаться по ячейкам, а при отпускании произойдет установка сооружения на месте квадрата.
2) событие obj1.onPress будет активировать тот же startDrag();, но при отпускании сооружение установится согласно ячейке.
Думаю, самым продуктивным способом, который не требует вмешательства в железо, будет №2. Ведь здесь потребуется лишь создавать дополнительные функции-обработчики, которые будут ответственны, например, за то, что не произошло ли отпускание мыши на другом здании.
Теперь можно приступать к реализации:
1) Для начала нам нужна регуляция наших нажатий и отпусканий. Для этого в функции initGame(); добавим строку:
Это говорит о том, что нажимание еще не произошло.
2) Теперь добавим в функцию obj1.onPress = function(){} противоположенную строку
Это говорит о том, что произошло нажатие на сооружение
3) Теперь в функции obj1.onRelease = function(){} мы добавляем строку в указанных местах:
obj1.onRelease = function():Void{ pay = 100; newx = obj1._x; newy = obj1._y; dx = sw - newx; dy = sh - newy; numx = o1w / 2 + bordx; numy = o1h / 2 + bordy; if (dx >= numx){ trux = true; } else { trux = false; } if (dy >= numy){ truy = true; } else { truy = false; } if ((trux == true)&&(truy == true)){ if (allMoney >= pay){ this.stopDrag(); allBuilds++; allMoney -= pay; obj++; duplicateMovieClip("obj1", "obj"+obj, getNextHighestDepth()); eval("obj"+obj)._x = newx; eval("obj"+obj)._y = newy; eval("obj"+obj).stop(); eval("obj"+obj).play(); obj1._x = oldx; obj1._y = oldy; info.text = "Здание куплено за " + pay + " кредитов"; drags = false; // ======================ЗДЕСЬ====================== } else { info.text = "Не хватает денег"; this._x = oldx; this._y = oldy; this.stopDrag(); drags = false; // ======================ЗДЕСЬ====================== } } else { this._x = oldx; this._y = oldy; this.stopDrag(); drags = false; // ======================ЗДЕСЬ====================== } }
Итак, подготовку мы закончили. Приступим к более сложной процедуре.
Спасибо за внимание
Всего комментариев 0
Комментарии
Последние записи от EndoCrinologist
- Настройка сокетов для Flash 8 (07.03.2013)
- Создание простого чата. Часть 1. Основы считывания данных (28.10.2011)
- Создание простого чата. Часть 1. Основы получения данных (28.10.2011)
- Создание простого чата. Часть 1. Основы отправки данных (27.10.2011)
- Создание простого чата. Часть 1. Введение (27.10.2011)