Я пытаюсь сделать игру (липкий, я знаю), и учитывая тот факт, что я не так хорош с javascript/jquery, мне удалось застрять при переключении логической переменной. Я пробовал весь var =! Var (не знаю, что это значит), но некоторые предположили, что он работает только в объективе C (опять же, не знаю). Я сделал скрипт JS http://jsfiddle.net/clarinetking/mLG6c/1/, и он работает в настоящий момент, но я хочу добавить переменную ко всем моим объектам, называемым "экипировать", и начать с нее как ложные и переключается на истину, когда нажимается правильная кнопка.
var sword = {
nam:'Sword',
atk:5,
def:1,
spd:-1,
type:'LeftH',
//equip = false
};
и т.д
switch ( $(this).attr('id') ) {
case 'equipsword':
atk += sword.atk;
def += sword.def;
spd += sword.spd;
//insert equip switch here
break;
да !
работает в javascript не только C, но и !
, является оператором NOT, он в основном принимает противоположное тому, что есть перед, поэтому:
!true === false
!false === true
это также относится к значениям правды/ложности:
!null === true
!0 === true
!15 === false
!"" === true
Поэтому для переключения булевского значения используйте только следующее:
var sword = {
nam:'Sword',
atk:5,
def:1,
spd:-1,
type:'LeftH',
equip:false
};
switch ( $(this).attr('id') ) {
case 'equipsword':
atk += sword.atk;
def += sword.def;
spd += sword.spd;
sword.equip = !sword.equip;
break;
но поскольку случай "equipsword" из внешнего вида будет срабатывать только тогда, когда экипировка, а не отказ от использования, также может сделать только sword.equip = true;
, особенно потому, что может возникнуть вероятность того, что какой-либо другой код может изменить значение equip
, а затем переключатель не будет работать, как ожидалось, например, если следующий код запустился до того, как был запущен случай equipsword:
function someFunctionThatGetsCalled(){
sword.equip = true;
}
это приведет к тому, что equip будет истинным, а затем, когда случай equipsword будет срабатывать, sword.equip станет ложным, потому что он использует переключатель !sword.equip
.
Вам нужно сделать больше, чем просто! Bool здесь, вы тоже захотите изменить статистику изменений. Например:
if (sword.equip) {
atk -= sword.atk;
def -= sword.def;
spd -= sword.spd;
}
else {
atk += sword.atk;
def += sword.def;
spd += sword.spd;
}
sword.equip = !sword.equip;
Обратите внимание, что вам, скорее всего, придется реорганизовать этот код, чтобы вам не требовался оператор switch, поскольку действие, которое вы выполняете для каждой части оборудования, идентично.
!
работает в javascript не просто C, а!
, это оператор NOT, он в основном принимает противоположность тому, перед чем находится, поэтому!true === false
!false === true
, это также относится к значениям true / false!null === true
,!0 === true
!15 === false
!"" === true