这里是一个全新的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类是静态的。