我有一个主要的应用程序(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