我有一個主要的應用程序(app.swf)加載一個模塊(profiles.swf)和配置文件模塊加載另一個模塊(member_profile.swf)。在member_profile中,我從返回Member類型的對象的服務器端獲取成員數據。返回的對象包含一個名爲Jobs的數組,其中包含保存類型爲MemberJob的對象。在member_profile模塊中,有一個函數使用類型爲MemberJob的參數來顯示作業詳細信息。我有一個循環,通過數組變回來,並呼籲像這樣每個數組項功能:類型強制失敗同一類
for(i = 0; i < member.Jobs.length; i++)
addJob(member.Jobs[i]);
我得到的addJob行錯誤:
類型強制失敗:不能轉換組件。 classes :: MemberJob @ 19107d81到components.classes.MemberJob。
而且我總是在第二次加載member_profile模塊時收到此錯誤。我的意思是這個模塊被加載,當我點擊配置文件模塊中的成員的名字時,它通過這個名字作爲子模塊的參數來加載該成員的配置文件,包括他的作業。因此,如果我選擇查看成員「X」的配置文件,則配置文件無任何錯誤地加載,但是如果我然後單擊成員「Y」(這導致子模塊用新參數重新加載),那麼我得到類型強制錯誤。如果我先點擊「Y」然後點擊「X」,則會發生同樣的情況,第二次加載時出錯。
任何人都可以幫助我嗎?
你可以張貼addJob函數的代碼..也許這個問題是存在的 – Treby 2010-07-01 01:26:19
我假設Flash會在每次加載SWF時爲'components.classes.MemberJob'註冊一個新的定義。第二個定義雖然在內容上與第一個定義完全相同,但被視爲與默認定義不同的類型,因此也是錯誤。這是一個錯誤,或者您在使用Flex模塊時缺少一些編譯參數以忽略重複的定義。我沒有使用Flex模塊,因此這只是一個假設。 – Amarghosh 2010-07-01 06:05:17
我不認爲問題是在addJob方法中,因爲除了將作業對象的值分配給顯示組件外,它什麼也不做,它看起來像這樣: public function addJob(mj:MemberJob):void {\t \t \t \t jobTitle.text = mj.JobTitle; jobDescription.text = mj.JobDescription; jobLocation.text = mj.JobLocation; //依此類推 } – Yasmine 2010-07-01 13:33:38