2

flixel/AS3 のかなり新しいユーザーですが、コーディングはまったく初めてというわけではありません。とにかく、エラーの原因は単純明快ですが、解決策ではありません。

「エラー: 静的タイプ org.flixel:FlxSprite を使用した参照による未定義の可能性があるプロパティへのアクセス。」

それは 6 回スローされ、2 回はプロパティ Scrap.selected で、4 回はスクラップ.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

4

2 に答える 2

1
for each (var scrap:FlxSprite in this)

「これ」のすべてのプロパティが FlxSprite のインスタンスであると確信していますか? FlxSprites のコレクションを ScrapManager 内に保存し、それらをループする必要があるのではないでしょうか?

これらのループで「スクラップ」をトレースして、それが正しいデータ型であることを確認することをお勧めします。そうであり、それでもこれらのエラーが発生している場合は、問題を引き起こしている特定のオブジェクトに絞り込むことができるはずです。

于 2012-01-31T13:27:12.350 に答える
1

私の推測では、(a) FlxSprite を静的に変更したか、(b) Scrap クラスが静的です。

于 2012-01-31T07:14:22.747 に答える