1. ActionScript / Говнокод #12687

    −118

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    override public function onRemove() : void {
        super.onRemove();
        var status : String = this.status;
        var index : int = questList.indexOf(this);
        var questList : Vector.<Quest> = Quest[status];
    
        questList.splice(index, 1);
    }

    Судя по тому что проект не падает квесты не удаляются...

    Запостил: kyzi007, 04 Марта 2013

    Комментарии (20) RSS

    • Может они в super.onRemove() сначала добавляются?
      Ответить
      • А, забыла сказать в классе нету поля questList. Поэтому когда берется индекс...

        Но в состояние злости меня привело Quest[status] и лишняя переменная.
        Как мне сказали я залезла в самые древние части кода которые бояться трогать уже.
        Ответить
        • Да, тогда смешно, что это компилируется... изза того, что проверка имен делается после того, как переменные уже перенесли в начало функции.
          Я когда-то с таким пролетел, когда плохой байткод получался, если не инициализировать счетчик цикла. Тут может даже оказаться, что компилятор сам переставлял в "нужной" последовательности.
          Ответить
          • Что значит может оказаться? Все объявления переменных (в тч и в условиях и циклах) выставляются при компиляции в начало метода.
            А вот присваивание остается где было и переменная в 4 строчке - андефайнед .
            То что компилируется вполне себе логично.
            Ответить
            • К сожалению Адоби похерили старую базу багрепортов, так бы нашел. У меня получалось так, что когда объявлялись две зависимые друг от друга переменные, то одна из них, вне зависимости от того, которая физически объявлялась первой, становилась первой. И плеер падал с VerifyError. Хз, может найду...
              Ответить
            • Хех, нашел, все-таки:
              https://bugs.adobe.com/jira/browse/ASC-4234
              Ответить
              • А, с super там тонко, и это тоже не баг насколько я знаю.
                Ответить
                • А, сейчас вспомнил: В тикете по ссылке - баг о том, как забыли дописать опкод с информацией о строке, где была объявлена переменная, и поэтому когда ошибка случалась, то сообщение об обшибке показывало на неправильную строчку. Да... это не совсем то :) Но был где-то и случай с инициализацией в произвольном порядке... хм :|
                  Ответить
                  • У меня когда то падало с сообщением о битой swf без указания строк естессно, из-за трайкетча в анонимной функции листнере. Нашла методом поиска льва в пустыне.
                    Ответить
              • Лур придёт, я ему всё расскажу.
                Ответить
    • А какая функция сильнее "final" или "override"?
      Ответить
    • судя по тому, что квесты прыгают от статуса к статусу, там еще полно багов и неочевидного поведения
      Ответить
      • Да.
        Цитата из моей истерики

        Для того чтобы узнать для какой локации квест

        берем все теги квеста
        для каждого пытаемся по айдишника взять локацию
        если получилось - эта локация и есть целевая для квеста
        если не получилось - целевая для квеста это дефолтная локация

        Для того чтобы перейти на локацию мы выдаем себе награду
        если в имени ресурса есть кусок строки GOTO_WORLD
        то надо разбить строку на две части, вторая - имя локации, на нее то нам и надо перейти
        Ответить
    • FLASH не нужен.
      Ответить
      • ┌─────────────┐
        │    FLASH    │
        │   УБИВАЕТ   │
        └─────────────┘

        один из popup-баннеров
        Ответить
    • wh0cd679282 <a href=http://sildenafilcitrate24.us.org/>extra resources</a>
      Ответить

    Добавить комментарий