2012-01-31 65 views
2

這裏的漂亮的新flixel/AS3用戶,雖然不是編碼的全新。無論如何,這個錯誤很簡單,但不是解決方案。 「AS3/Flixel:「訪問可能未定義的屬性。」

」錯誤:通過靜態類型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

回答

1
for each (var scrap:FlxSprite in this) 

您確定「this」中的每個屬性都是FlxSprite的實例嗎?也許你需要在ScrapManager中存儲一個FlxSprites集合,然後循環這些集合呢?

我建議在這些循環中追蹤「廢料」,以確保它是正確的數據類型。如果是,並且它仍然在發佈這些錯誤,那麼應該能夠將其縮小到可以解決問題的特定對象。

+0

噢,我完全忘了,但是我改變了Scrap爲FlxExtendedSprite。我想這可能會搞砸了吧?現在無法訪問我的代碼,但希望能解決它。感謝您的提示,不能相信我已經忘記了這一點。< – 2012-01-31 15:05:42

+0

完成後一定要標記正確的答案。歡迎來到堆棧溢出! – 2012-01-31 18:23:05

+0

AHAH!你的回答比我想象的更接近。我在ScrapManager中也有這樣的一行: 'var scrap:Scrap = Scrap(getFirstAvailable());' 我想這意味着我無法訪問Scrap內部的變量,因爲我在看FlxSprite(他們沒有'是否存在),對嗎?非常感謝你!它還沒有工作,但那是因爲我的數學,這一切都沒有錯誤! – 2012-01-31 23:53:10

1

我的猜測是(a)您將FlxSprite更改爲靜態,或(b)您的Scrap類是靜態的。

+0

不幸的是,「靜態」並不像Scrap,ScrapManager,FlxSprite或FlxExtendedSprite中提到的那樣。不過謝謝你。 – 2012-01-31 23:31:03