![]() |
|
||||||||||
|
|||||
|
Пытаюсь сделать выбор оружия по колесу мышки, додумался до такого кода:
private var nw:int; private var weapons:Array = [1,0,0,0,1,0]; stage.addEventListener(MouseEvent.MOUSE_WHEEL, whelled); private function whelled(e:MouseEvent):void { nw += int(e.delta / 2); if (nw < 0) { nw = 5; } if (nw > 5) { nw = 0; } if (weapons[nw] != 0) { changeWeapon(nw); }else{ for (var i:int = 0; i < weapons.length; i++) { if (weapons[i] != 0) { changeWeapon(i); } } } } public function changeWeapon(num:int):void { var mm:MovieClip = mc.wpgroup.getChildByName("wp" + num); weaponMC = mm; TweenLite.to(mc.colored, 0.5, { x:weaponMC.x + mc.wpgroup.x, y:weaponMC.y + mc.wpgroup.y } ); } Если функция наткнулась на 0 в массиве "weapons", то функция должна искать "1" в массиве и как только нашла, отправить индекс в спец функцию которая двигает индикатор выбранного оружия. Мой код работает криво, бывает индикатор дернулся и вернулся обратно. Подскажите, как быть?
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
private var _curIndex:int = 0; public function Main() { stage.addEventListener(MouseEvent.MOUSE_WHEEL, onWheelEvent); } private function onWheelEvent(e:MouseEvent):void { var delta:int = e.delta; var weapons:Array = [1, 0, 0, 0, 1, 0]; if (delta < 0) _curIndex--; else _curIndex++; var length:int = weapons.length; _curIndex = trimIndex(_curIndex, length -1); if (weapons[_curIndex] == 0) { var i:int; if (delta > 0) { i = 0; while (i < length) { _curIndex++; _curIndex = trimIndex(_curIndex, length - 1); if (weapons[_curIndex] != 0) { trace("ОРУЖИЕ НАЙДЕНО, ПРОКРУТКА ВВЕРХ", weapons[_curIndex], _curIndex); break; } i++; } } else { i = length; while (i) { _curIndex--; _curIndex = trimIndex(_curIndex, length - 1); if (weapons[_curIndex] != 0) { trace("ОРУЖИЕ НАЙДЕНО, ПРОКРУТКА ВНИЗ", weapons[_curIndex], _curIndex); break; } i--; } } } trace("НУЖНОЕ ОРУЖИЕ:", weapons[_curIndex]); } private function trimIndex(index:int, maxValue:int):int { // убеждается, что индекс никода не выходит за нужные пределы if (index < 0) index = maxValue; else if (index > maxValue) index = 0; return index; } |
|
|||||
private var _weapons:Array = [1, 0, 0, 0, 1, 0]; private var _currenWeaponIndex:int = 0; private function mouseWheelHandler(event:MouseEvent):void { var weaponIndex:int = delta > 0 ? _weapons.indexOf(1, _currenWeaponIndex) : _weapons.lastIndexOf(1, _currenWeaponIndex); if (weaponIndex != -1) { _currenWeaponIndex = weaponIndex; specialFunction(weaponIndex); //Что-то нашли } }
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
caseyryan, Спасибо огромное, то, что нужно!
alatar, не знаю как у Вас, но у меня weaponIndex постоянно выдает "0"
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
|
Цитата:
private var _weapons:Array = [1, 0, 0, 0, 1, 0]; private var _currenWeaponIndex:int = 0; private function mouseWheelHandler(event:MouseEvent):void { _currenWeaponIndex = delta > 0 ? (_currenWeaponIndex + 1)%_weapons.length : (_currenWeaponIndex - 1)%_weapons.length; var weaponIndex:int = delta > 0 ? _weapons.indexOf(1, _currenWeaponIndex) : _weapons.lastIndexOf(1, _currenWeaponIndex); if (weaponIndex != -1) { _currenWeaponIndex = weaponIndex; specialFunction(weaponIndex); //Что-то нашли } }
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Точно! Спасибо, alatar.
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
|
Регистрация: Oct 2009
Сообщений: 52
|
Алтар, можете объяснить как массив этот работает:
|
|
|||||
|
Регистрация: Oct 2009
Сообщений: 52
|
А что такое "ТС"??
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:52. |
|
|
« Предыдущая тема | Следующая тема » |
|
|