![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
|
ну логика у меня в принципе такая. На МС скилла стоит код:
onClipEvent (load) { id = this._name.slice(5, 7); gotoAndStop(id); zabito = 0; zabitoC = 0; guardX = _x;//исходное guardY = _y;//положение lockMenu = false; checks = true; } on (rollOver) { if (lockMenu == false) { _root.skillBASE(this._name);// берет инфу о скилле _root.menuCheck(_x, _y, _width);//проверяет, чтобы самодельное окно не выходило за пределы экрана } } on (press) { this.swapDepths(100); startDrag(this); _root.information._visible = false; lockMenu = true; } //теперь очень громоздкий код который мне ОЧЕНь хотелось бы оптимизировать, но мозг не рабоает что-то on (release) { for (i=1; i<=3; i++) {//идет перебор 3 слотов экипировки скиллов if (this.hitTest(_root["slot"+i])) { if (_root.a[i] == 1) {//условие проверяет забит ли i-тый слот другим скиллом, если 1 то забит и МС возвращается на своё guard место i = 3; _root.a[zabito] = 0;//изначально все скиллы находятся в нулевом слоте a[0] trace("a["+zabito+"]="+_root.a[zabito]); trace("ВЫШЕЛ ИЗ СЛОТА: "+zabito); _x = guardX; _y = guardY; _width = 38; _height = 38; this.shine.gotoAndStop(1); break; } else { _x = _root["slot"+i]._x;//далее естественно описывается вхождение в выбранный слот при свободном слоте _y = _root["slot"+i]._y; _width = _root["slot"+i]._width; _height = _root["slot"+i]._height; if (i<>zabito) { trace("ВЫШЕЛ ИЗ СЛОТА "+zabito); _root.a[zabito] = 0; trace("a["+zabito+"]="+_root.a[zabito]); } trace("ВОШЕЛ В СЛОТ "+i); _root.a[i] = 1; trace("a["+i+"]="+_root.a[i]); zabito = i; this.shine.gotoAndStop(2); break; } } else { if (i == 3) {//а здесь описывается что происходит если hittest не "почувствовал" ни одного слота _root.a[zabito] = 0; trace("a["+zabito+"]="+_root.a[zabito]); trace("ВЫШЕЛ ИЗ СЛОТА: "+zabito); _x = guardX; _y = guardY; _width = 38; _height = 38; this.shine.gotoAndStop(1); } }//и вот сейчас начинается АД if (this.hitTest(_root["comboslot"+i])) {//теперь проверяем еще 2 слота, но другие по функционалу, то есть не экипировк, а комбинирования if (_root.b[i] == 1) {//естественно коды аналогичны i = 2; _root.b[zabitoC] = 0; trace("b["+zabitoC+"]="+_root.b[zabitoC]); trace("ВЫШЕЛ ИЗ СЛОТА: "+zabitoC); _x = guardX; _y = guardY; _width = 38; _height = 38; this.shine.gotoAndStop(1); break; } else { _x = _root["comboslot"+i]._x; _y = _root["comboslot"+i]._y; _width = _root["comboslot"+i]._width; _height = _root["comboslot"+i]._height; if (i<>zabitoC) { trace("ВЫШЕЛ ИЗ СЛОТА "+zabitoC); _root.b[zabitoC] = 0; trace("b["+zabitoC+"]="+_root.b[zabitoC]); } trace("ВОШЕЛ В СЛОТ "+i); _root.b[i] = 1; trace("b["+i+"]="+_root.b[i]); zabitoC = i; if (i == 1) { _root.part1 = id; trace(_root.part1); } else { _root.part2 = id; trace(_root.part2); } this.shine.gotoAndStop(2); break; } } else { if (i == 2) { _root.b[zabitoC] = 0; trace("b["+zabitoC+"]="+_root.b[zabitoC]); trace("ВЫШЕЛ ИЗ СЛОТА: "+zabitoC); _x = guardX; _y = guardY; _width = 38; _height = 38; this.shine.gotoAndStop(1); } } } stopDrag(); this.swapDepths(0); lockMenu = false; } on (rollOut) { _root.information._visible = false;//скрывает самодельное окно с инфой } 1) В 3ий слот экипировки не может попасть скилл, который находился в слоте комбо. 2) Всё видно на этом скриншоте В общем всё состоит из 3 слотов экипировки и двух слотов для комбинирования скиллов. Я думал сделать их однотипными, то есть не делить на slot и comboslot, а slot1-slot5. Что думаете по этому поводу. Прекрасно понимаю, что безумно избыточно, но лучше ничего к сожалению не придумал и то, что ВСЁ ЭТО на мувике меня тоже безумно напрягает, если учитывать что это всё дублируется на 50 аналогичных МС. Вот такие пироги Если, что-то непонятно в коде спрашивайте Последний раз редактировалось Dalass13; 05.11.2010 в 15:43. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:37. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|