2013-05-10 59 views
1

我前幾天問了一個問題,它教會了我一些關於顯示對象和東西的信息。但我有另一個問題。Flash AS3 - 1046:類型未找到或不是編譯時常量:

這是我的文檔類:

package 
{ 

    import flash.display.MovieClip; 
    import flash.display.Stage; 

    public class Engine extends MovieClip 
    { 

     public function Engine() 
     { 
      var calling:Callitems = new Callitems(cat, BluKnife) 

      stage.addChild(calling); 

     } 

    } 

} 

catBluKnife都在我的庫AS3聯動那些名字影片剪輯。

現在這裏是Callitems

package 
{ 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.display.InteractiveObject; 


    public class Callitems extends MovieClip{ 


    public function Callitems(Enemy1, Enemy2) 
    { 
     var knife:Enemy1 = new Enemy1(); 

     this.addChild(knife); 
     knife.x = 200; 


     var ct:Enemy2 = new Enemy2(); 

     this.addChild(ct); 


    } 

} 

} 

現在我的問題是,當我是不會放棄Callitems參數和改爲只是讓Enemy1cat,使Enemy2Bluknife這兩個影片剪輯的加入階段如預期。但現在,我試圖讓Callitems採取參數,以便我可以在某些時間放置不同的剪輯,我得到以下錯誤:

1046:未找到類型或不是編譯時常量:Enemy1 。 1046:未找到類型或不是編譯時常量:Enemy2。

謝謝大家,任何的幫助深表感謝

編輯:我做了搜索這個網站的是同樣的錯誤,但我並不在這方面不懂的問題,對不起!

回答

2

問題在於,Enemy1在定義var knife:Enemy1時不被編譯器識別爲類型(因爲它是變量名稱)。儘量只鑄造它作爲一個更普遍的類型:

var knife:MovieClip = new Enemy1() as MovieClip; 
+0

嘿謝謝科迪亞克,這讓它像魅力一樣工作。 – 2013-05-10 14:22:57

+0

不客氣,但請閱讀@ mossefetcher的回答。您還應該爲您的構造函數的參數指定一個類型。你還應該使用小寫變量(knife,type1)和大寫類(Cat,BlueKnife)。 – Kodiak 2013-05-10 14:30:18

+0

啊,是的,指出。是的,我與mossefetcher一起嘗試了這個解決方案,但我得到了相同的答案。也許我做錯了。你的意思是指定類型爲敵人:MovieClip?而不是讓它使用默認的「對象」類型? – 2013-05-10 14:40:16

1

的問題是你似乎有類名作爲Callitems構造函數的參數。 它應顯示是這樣的:

public function Callitems(parameter1:Enemy1, parameter2:Enemy2) 
    {... 

您還傳遞未定義變量的Callitems構造(貓BluKnife)。如果它們應該被傳入Callitems(這可能不是一個好主意),那麼至少應該先定義它們。

+0

也謝謝!抱歉我明白你的意思了,我會努力使用更好的做法。 – 2013-05-10 14:41:03

相關問題