AS3 / Flixel:“访问可能未定义的属性。”

时间:2012-01-31 05:54:52

标签: actionscript-3 flixel

这里有相当新的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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

for each (var scrap:FlxSprite in this)

你确定&#34;这个&#34;是FlxSprite的一个实例?也许您需要在ScrapManager中存储一系列FlxSprites并循环使用它们?

我建议追查&#34;废料&#34;在这些循环中,以确保它是正确的数据类型。如果是,并且仍在发出这些错误,您应该能够将其缩小到给您提供问题的特定对象。