2012-11-03 49 views
2

我跟隨hemanth sharma關於椋鳥框架的優秀教程系列。我或多或少地複製了他的代碼,並對我想到的遊戲做了一些改變。代碼是他在他的項目中使用的80%。不過,我遇到了一個奇怪的錯誤:「錯誤1067」它抱怨所謂無關類型的「隱式強制」。動作腳本:隱性強制問題

我瀏覽以前的問題,並意識到這個問題:

1067: Implicit coercion of a value of type Class to an unrelated type flash.display:DisplayObject

我收到錯誤消息基本上是相同的,但不幸的是,解決方案並不適用於我的問題。此外,我在很多有趣的不同口味中遇到了這個錯誤。

  1. 我有叫NavigationEvent自定義事件類擴展 starling.events.Event。當使用者試圖在 遊戲屏幕之間切換時,發送此事件。下面是一些代碼:

    import starling.events.Event; 
    
    public class NavigationEvent extends Event 
    

    它被分派這樣的:

    this.dispatchEvent(new NavigationEvent(NavigationEvent.CHANGE_SCREEN,{id:"play"},true)); 
    

    錯誤消息說:

    Error 1067: Implicit coercion of a value of type events:NavigationEvent to an unrelated type starling.events:Event

    代碼工作得很好,當我第一次寫,但現在,經過我'改變了它被破壞的另一部分程序。我無法解釋它 它。我從starling.events.Event擴展了NavigationEvent,所以 類型絕對不是無關的。我甚至跑這個程序就像 這個。不可否認的是,在屏幕之間切換的例程還沒有實現,但該事件被解僱了沒有問題。

  2. 爲了讓用戶觸發此事件,我在 屏幕上添加了一個按鈕。它是椋鳥標準starling.display.Button;。該 按鈕是我的屏幕類

    private var playBtn:Button; 
    

    但是這條線會導致錯誤的成員變量:

    playBtn=new Button(Assets.getAtlas().getTexture("play")); 
    

    這一次的錯誤就更離譜:

    Error 1067: Implicit coercion of a value of type starling.textures:Texture to an unrelated type starling.textures:Texture

我該怎麼辦?

+0

你正在加載一個SWF到另一個? –

+2

+1以清楚描述問題並顯示以前的研究。 –

+0

@Amy Blankenship,no。這是一個自包含的項目 – lhk

回答

3

有時,如果在Flash Builder中打開兩個Flash Pro項目並且兩個項目在代碼路徑中具有相同的目錄,則可能會遇到您遇到的錯誤。當您在其中一個項目中打開文件時會發生這種情況,但是您正在編譯和運行兩個項目(尤其是在您正在調試並設置了斷點時)。

我認爲正在發生的事情是,FB在同一個文件中編譯,就好像它是一個不同的文件,因爲它從打開文件並將其編譯到其中的文件只是引用,但沒有公開。打開的文件擴展了項目中的基類,而不是其中包含fla/xfl的項目中的基類。雖然我們知道它其實是一個文件,FB顯然無法弄清楚。我想你真的很輕鬆,因爲過去我必須採取真正英勇的措施來解決這個問題。

您可以通過將您的共享代碼移出一個庫項目來解決此問題,我認爲這是工程師可能認爲每個人都會這樣做的場景。我認爲他們不可能(或者至少沒有)預見到Flash開發的歷史實踐以及與FB和FP一起工作的怪癖,這些都會導致這個特定的bug出現。