Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Игра зависает после добавления переменной - баг? (http://www.flasher.ru/forum/showthread.php?t=143387)

vinch 15.08.2010 13:24

Игра зависает после добавления переменной - баг?
 
Здраствуйте.
Есть игра.
Добавил в класс уровня поле:
Код AS3:

public var BulletClass:Class = Bullet;

Которое нигде не использую.
В момент, когда создается экземпляр класса:
Код AS3:

new Bullet(......)

Игра зависает.
BulletClass не используется вообще. Убираю его - все работает.
Баг? :wacko:

UP: Даже так - создал класс оружия:
Код AS3:

        public class Weapon
        {
                public static var gameArray:Array;
                public var bulletClass:Class;
                public var reloadTime:Number;
 
                public function Weapon()
                {
 
                }
 
                public function shoot(xi:Number, yi:Number):void
                {
                        gameArray.push(new bulletClass(.....));
                }
        }

и по таймеру вызываю shoot. Игра зависает (фпс очень маленький). Ранее, в другой игре, такое работало.

Zik. 15.08.2010 14:55

Не баг, просто игра так классно написана

Psycho Tiger 15.08.2010 15:07

Очевидно, что проблема в конструкторе Bulet.

vinch 15.08.2010 15:47

Так говорю, все работает, пули создаются и т.п. При чем тут конструктор?
А когда просто добавляю атрибут в класс и совсем, абсолютно, его не использую:
Код AS3:

public var BulletClass:Class = Bullet;

, то игра зависает (фпс падает).
Комментирую эту строчку (больше ничего не меняя, ибо она нигде не используется и ни на что, казалось бы, не влияет) - и все работает.
Т.е., без этой строчки, которая ни на что не влияет, конструктор Bullet работает идеально.

Psycho Tiger 15.08.2010 17:00

Оу, теперь понятно.
Попробуйте уменьшить код так, чтобы баг сохранился и выложите на форуме. Чем компилируете?

vinch 15.08.2010 17:32

Уменьшить код, к сожалению, трудно - для того же Bullet-а иерархия наследования достаточно большая, плюс он зависит от Box2D и т.п. Попробовал воспроизвести ситуацию с пустыми классом Bullet и его предками - естественно, все работает хорошо. Так что искать, что создает проблему, было бы трудновато.

Компилирую средствами Flex SDK 3.5 с помощью FD.

Psycho Tiger 15.08.2010 19:08

Попробуйте четвертый сдк.

expl 15.08.2010 21:12

Можно посмотреть, нет ли где "недетерменированных" проходов по Dictionary или Object, от порядка которых может зависеть логика, ну типа:
Код AS3:

    for (var p:String in _elements)
    {
          // если здесь удалять и добавлять элементы в _elements
          // можно получить зависимость от фазы луны
    }

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

Эсли бага в этом - добиваемся независимости от порядка или используем структуры с гарантированным порядком обхода

P.S. Еще тормоза из неоткуда, которые нельзя локализовать появляются из-за засирания памяти - на всякий случай откройте Диспетчер задач и посмотрите сколько нажрала флешка, хотя что может случиться с памятью от этой строчки?
Цитата:

public var BulletClass:Class = Bullet;
но мало ли...


Часовой пояс GMT +4, время: 20:35.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.