AS3 / Flixel: «Доступ к возможно неопределенному свойству». - PullRequest
2 голосов
/ 31 января 2012

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

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

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

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

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 ]

1 голос
/ 31 января 2012
for each (var scrap:FlxSprite in this)

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

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

1 голос
/ 31 января 2012

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

...