TypeError: Error #1034: 强制转换类型失败:无法将 global@189ac0d1 转换为 mx.core.IFlexDisplayObject。

今天遇到一个错误

PopUpManager remove的时候报错

如下

 

 

 

TypeError: Error #1034: 强制转换类型失败:无法将 global@189ac0d1 转换为 mx.core.IFlexDisplayObject。
 at Function/<anonymous>()[D:\hexin\workplace_aisvoyage\sailing\flex_src\com\maphao\sailing\flex\common\sys\pm\ChangeInitPwd.mxml:51]
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at flash.net::URLLoader/onComplete()

 

在网上找资料受是flex4的一个bug 然后处理方法参考如下..

 

http://hi.baidu.com/stupid_deer/blog/item/591cdedb381f32f839012f90.html

 

不过这样不好 因为组件只visible了 如果组件很多 那么内存占用会很多

 

后来无意发现一种解决方法 也就是把关闭组件单独写成一个方法 然后在其他需要关闭组件的地方调用这个方法即可解决这个问题...

 

如:

private function closeWindow():void {  
				PopUpEffect.Hide(this);
			}


 

 

PopUpEffect.as代码如下

 

package com.maphao.sailing.flex.common.sys.tool
{
import flash.display.DisplayObject;

import mx.core.FlexGlobals;
import mx.core.IFlexDisplayObject;
import mx.effects.Blur;
import mx.events.TweenEvent;
import mx.managers.PopUpManager;

public class PopUpEffect
{
	public function PopUpEffect()
	{
	}
	
	/**
	 * 弹出窗体
	 * addPopUp的parent 定位顶层容器
	 */ 
	public static function Show(control:IFlexDisplayObject,modal:Boolean=true):void
	{
		var mShowEffect:Blur=new Blur();
		mShowEffect.blurXFrom=255;
		mShowEffect.blurYFrom=255;
		mShowEffect.blurXTo=0;
		mShowEffect.blurYTo=0;
		mShowEffect.target= control;
		mShowEffect.duration=300;
		PopUpManager.addPopUp(control,DisplayObject(FlexGlobals.topLevelApplication),modal);
		PopUpManager.centerPopUp(control);
		mShowEffect.play();
		
	}
	
	/**
	 * 关闭窗体
	 */ 
	public static function Hide(control:IFlexDisplayObject):void
	{
		
		var mHideEffect:Blur=new Blur();
		mHideEffect.blurXFrom=0;
		mHideEffect.blurYFrom=0;
		mHideEffect.blurXTo=255;
		mHideEffect.blurYTo=255;
		mHideEffect.addEventListener(TweenEvent.TWEEN_END,function():void{
			PopUpManager.removePopUp(control);
		});
		mHideEffect.duration=300;
		mHideEffect.target=control;
		mHideEffect.play();
	}

}
}


 

需要关闭窗体的地方调用closeWindow()这个方法即可...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值