AS3/弗利克塞尔: "Access of possibly undefined property."



这里是一个全新的flixel/AS3用户,尽管对编码并不完全陌生。无论如何,错误的原因很简单,但不是解决方案。

"错误:通过静态类型org.flixel:FlxSprite的引用访问可能未定义的属性。"

它被抛出了6次,两次是用属性scratch.selected抛出的,四次是用scratch.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!~
            }
        }
    }

报废作为

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

我认为(希望)这就是解决这个问题所需要的全部,但如果需要,我很乐意提供更多。感谢阅读。:D

for each (var scrap:FlxSprite in this)

你确定"this"中的每个属性都是FlxSprite的实例吗?也许你需要在ScrapManager中存储一组FlxSprites,然后循环使用它们?

我建议找出那些循环中的"废料",以确保它是正确的数据类型。如果是,并且它仍在发出这些错误,那么您应该能够将其缩小到给您带来问题的特定对象。

我的猜测是(a)您将FlxSprite更改为静态,或者(b)您的Scrap类是静态的。

相关内容

  • 没有找到相关文章

最新更新