AS3/Flixel: "Доступ к возможно неопределенному свойству".
Довольно новый пользователь flixel/AS3, хотя и не совсем новичок в кодировании. В любом случае, ошибка довольно проста по своей причине, но не по ее решению.
"Ошибка: доступ к возможно неопределенному свойству через ссылку со статическим типом org.flixel:FlxSprite."
Он генерируется 6 раз, дважды с помощью свойства scrap.selected и четыре раза с scrap.distanceToMouse - я пометил каждую строку, которая выдает ошибку, с комментариями.
Я искал по всей сети и в частности Stackru. Это похоже на довольно распространенную проблему, но я не смог применить какие-либо решения для моей конкретной ситуации. В любом случае, вот соответствующий код...
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 ответа
for each (var scrap:FlxSprite in this)
Вы уверены, что каждое свойство в "this" является экземпляром FlxSprite? Может быть, вам нужно хранить коллекцию FlxSprites внутри ScrapManager и просматривать их вместо этого?
Я бы посоветовал отследить "лом" в этих циклах, чтобы убедиться, что это правильный тип данных. Если это так, и он все еще выдает эти ошибки, вы должны быть в состоянии сузить его до конкретного объекта, который создает вам проблему.
Я предполагаю, что (а) вы изменили FlxSprite на статический, или (б) ваш класс Scrap является статическим.