今天遇到一个错误
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()这个方法即可...
本文介绍了在使用Flex4开发过程中遇到的PopUpManagerremove报错问题,通过将组件关闭操作封装成独立方法,避免了组件可见性调整导致的内存占用增加,提供了一种更高效、内存友好的解决方案。文章还详细解释了所使用的PopUpEffect.as代码实现,包括组件显示和隐藏的方法,以及如何在不同场景中调用这些方法。

2774

被折叠的 条评论
为什么被折叠?



