2010-08-21 35 views
2

我有一個名爲Level的類,它繼承MovieClipLevel有一個名爲gridView的設計師的小孩,gridView用於Level的構造函數。
我也有類名爲Level1繼承Level。當我嘗試類似addChild(new Level1())時,我在Level構造函數中遇到錯誤,說gridView爲空。我究竟做錯了什麼?閃存中的MovieClip繼承錯誤

的代碼的某些部分:

public class Level extends MovieClip 
{ 
    public function Level() 
    { 
     var matrix:Matrix = new Matrix(); 
     matrix.translate(-250, -250); 
     matrix.rotate(Math.PI/6); 
     matrix.scale(1, 0.5); 
     matrix.translate(250, 250); 
     gridView.transform.matrix = matrix; // error here referred from: 
    } 
} 

public class Level1 extends Level 
{ 
    public function Level1() 
    { 
     super(); 
    } 
} 

addChild(new Level1()); // referred from here 
addChild(new Level()); // this worked fine 
+0

在包含名爲gridView的對象的創作中,Level1是否連接到MC?如果不是,那就是你的問題 - 類繼承只發生在代碼中; Level的子類不會因爲父類在創作中聲明瞭一個而沒有自己的GridView實例。 – fenomas 2010-08-22 16:04:09

回答

0

示例代碼yould是很好的。 gridView在Flash IDE中真的具有「gridView」的實例名稱嗎?

+0

是的,代碼很長。我將添加它的片段 – Dani 2010-08-21 03:03:54

0

沒有代碼或某些設置的理解,這裏就是我想你的類是什麼樣子:

package { 
    import flash.display.MovieClip; 

    public class Level extends MovieClip { 
     public var gridView:GridView; 

     public function Level() { 
      gridView.x = 100; 
     } 
    } 
} 

這是假設gridViewGridView,但它可以是任何東西,真的。

可能發生的情況是,您沒有在Flash IDE中正確命名的gridView實例實例。你可能想檢查一下。

另一種可能性是,您可能會陷入那種打開「嚴格模式」的柔和芭蕾舞劇中,同時也會關閉「自動聲明舞臺實例」。您可以通過轉到發佈設置 - > Flash選項卡 - >單擊腳本下拉框右側的設置按鈕來找到這些複選框。

這意味着你必須在自動聲明關閉的情況下做更多的工作。

對於什麼,你可以,可以在嚴格模式不行就來看看這個堆棧溢出問題位信息的: Summary of ActionScript 3 strict mode

爲在舞臺上的實例了一下,有這個堆棧溢出問題:Flash AS3: ReferenceError: Error #1056: Cannot create property

+0

我已經發布了我的代碼,它不像你在開始時寫的那樣。當我嘗試'新的Level()'它的工作正常,但是當我嘗試'新的Level1()'它死了,雖然'級別'聲明幾乎是空的。 – Dani 2010-08-21 12:38:32

+0

啊,我開始對沒有代碼的問題發表評論。現在讓我再看看這個源代碼。 – Liam 2010-08-21 20:10:08

0

我建議你在'Level'類中公開聲明'gridView'。

例如。 public var gridView:MovieClip;