2

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

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

它被抛出 6 次,两次使用属性 scrap.selected 和四次使用 scrap.distanceToMouse - 我已经用注释标记了每行引发错误的行。

我专门搜索了整个网络和 StackOverflow。这看起来是一个很常见的问题,但我无法针对我的具体情况应用任何解决方案。无论如何,这是相关的代码......

废料管理器.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

4

2 回答 2

1

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

于 2012-01-31T07:14:22.747 回答
1
for each (var scrap:FlxSprite in this)

您确定“this”中的每个属性都是 FlxSprite 的实例吗?也许您需要在 ScrapManager 中存储 FlxSprite 的集合并循环遍历它们?

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

于 2012-01-31T13:27:12.350 回答