AS3/Flixel: "Доступ к возможно неопределенному свойству".

Довольно новый пользователь flixel/AS3, хотя и не совсем новичок в кодировании. В любом случае, ошибка довольно проста по своей причине, но не по ее решению.

"Ошибка: доступ к возможно неопределенному свойству через ссылку со статическим типом org.flixel:FlxSprite."

Он генерируется 6 раз, дважды с помощью свойства scrap.selected и четыре раза с scrap.distanceToMouse - я пометил каждую строку, которая выдает ошибку, с комментариями.

Я искал по всей сети и в частности Stackru. Это похоже на довольно распространенную проблему, но я не смог применить какие-либо решения для моей конкретной ситуации. В любом случае, вот соответствующий код...

ScrapManager.as

    if (FlxG.mouse.pressed)
    {
        var ClosestDistance:int = 500; 
        for each (var scrap:FlxSprite in this)
        {
            scrap.selected = false; //error here!~ 
            var dx:int = scrap.x - FlxG.mouse.screenX;
            var dy:int = scrap.y - FlxG.mouse.screenY;
            scrap.distanceToMouse = (dx * dx) + (dy * dy); //error here!~

            if (scrap.distanceToMouse < ClosestDistance) //error here!~
            {
                ClosestDistance = scrap.distanceToMouse; //error here!~
            }
        }
        for each (var scrap:FlxSprite in this) 
        {
            if (scrap.distanceToMouse == ClosestDistance) //error here!~
            {
                scrap.selected = true; //error here!~
            }
        }
    }

Scrap.as

package 
{
    //import stuff...

    public class Scrap extends FlxExtendedSprite
        {
            public var selected:Boolean = false; 
            public var distanceToMouse:int; 
            //and more stuff...

Я думаю (надеюсь), что это все, что нужно для решения этой проблемы, но я буду рад предоставить больше, если потребуется. Спасибо за прочтение.:D

2 ответа

Решение
for each (var scrap:FlxSprite in this)

Вы уверены, что каждое свойство в "this" является экземпляром FlxSprite? Может быть, вам нужно хранить коллекцию FlxSprites внутри ScrapManager и просматривать их вместо этого?

Я бы посоветовал отследить "лом" в этих циклах, чтобы убедиться, что это правильный тип данных. Если это так, и он все еще выдает эти ошибки, вы должны быть в состоянии сузить его до конкретного объекта, который создает вам проблему.

Я предполагаю, что (а) вы изменили FlxSprite на статический, или (б) ваш класс Scrap является статическим.

Другие вопросы по тегам