好的我有一个TitleWindow
的子类用这个方法:
public function launchInNewWindow(e:Event):void
{
this.parent.removeChild(this);
ownWindow = new Window();
ownWindow.systemChrome = 'none';
ownWindow.type = NativeWindowType.LIGHTWEIGHT;
ownWindow.transparent = true;
ownWindow.setStyle('showFlexChrome', false);
ownWindow.width = this.width > 750 ? 750 : this.width;
ownWindow.height = this.height > 550 ? 550 : this.height;
edit.enabled = false;
ownWindow.addChild(this);
ownWindow.width += 5; //add to show dropshadow
ownWindow.height += 10; //add to show dropshadow
ownWindow.open();
_inOwnWindow = true;
ownWindow.nativeWindow.x = Application.application.nativeWindow.x + this.x + 5; //keep in same spot add 5 for systemChrom border
ownWindow.nativeWindow.y = Application.application.nativeWindow.y + this.y + 30;//keep in same spot add 30 for systemChrom title
}
这样做是通过创建一个新的Window对象并将其自身添加到新Window的displayList来使标题窗口成为自己的Window
(NativeWindow)。
它的效果非常好,但是如果我在这个类的实例上设置了removedEffect
,则在尝试将自身添加到Window的displayList时会产生错误。
我尝试添加:
this.setStyle('removedEffect',null);
和
this.setStyle('removedEffect',new TitleWindow().getStyle('removedEffect'));
尝试删除任何removeEffect设置在自己之前,但没有运气。
但如果组件上没有removeEffect,它可以正常工作。必须有办法解决这个问题。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
要使removedEffect
工作,窗口需要在原始父级上,但是您会立即尝试将其添加到新父级,并且它不能同时属于两个父级。我可以想到几个选项。
获取要删除的窗口的位图,显示在同一位置,在此位图副本上运行所需的效果,然后您可以在不受效果干扰的情况下重新生成原始图像。< / p>
将删除和重新父项的代码分为两个步骤。首先删除窗口。然后当removedEffect
完成后,将其添加到新窗口的显示列表中。