我是新手,最近遇到了障碍。
这是我正在运行的代码。
/**
* return background definition depending on time
*/
private function findBackgroundItem( relativeTime : Number ) : CSBackgroundItem
{
if( this.backgroundItems == null ) return null;
var result :CSBackgroundItem = null;
var relative:Date = new Date(relativeTime);
for( var i : Number = 0; i < this.backgroundItems.length; i++ )
{
// backgroundItems is an Ilist of CSBackgroundItem.
var colourItem : CSBackgroundItem = CSBackgroundItem( this.backgroundItems.getItemAt( i ) );
// other stuff here
}
return result;
}
当 IList.getItemsAt() 结果被强制转换为 CSBackgroundItem 变量 colourItem 时会出现问题。抛出如下错误
TypeError: Error #1034: Type Coercion failed: cannot convert com.mystuff::CSBackgroundItem@650e8dd1 to com.mystuff.CSBackgroundItem.
如果我使用 'as'
关键字,我会得到 colourItem
中的转换结果为 null。使用调试器显示列表不为空,并且确实填充了 CSBackgroundItem
对象。
现在这是古怪的一点..这段代码有效,第一次加载模块时..后续加载(卸载后)抛出异常。
谁能解释为什么会发生这种情况?
最佳答案
仅供引用,加载到子 ApplicationDomain 中的类型可以转换为父 ApplicationDomain 中的类型(它扩展/实现)。
例如。
loader.applicationDomain = ApplicationDomain.currentDomain; // parent domain
loader.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); // child domain
loader.applicationDomain = new ApplicationDomain(); // new domain
关于apache-flex - Flex 3.2 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886674/