我想要实现的是扩展Flex中的组件并添加要在其旁边显示的图像。 (图片不能在里面添加(addElement / addChild)控件)
我已经计算了控件的坐标,并设法定位到它旁边的图像,而Creation_Complete
事件中没有任何问题。但我注意到的是,当屏幕调整大小并且控件的位置发生变化时,图像仍然停留在同一位置。
所以我听了Render
事件并进行了坐标计算,将图像放在控件旁边。现在这很有效。
但我遇到的问题是,监听Render
事件进行坐标计算是否对性能不利?为了完成我的工作,还有另一个不常被解雇的事件吗?
希望它很清楚,并且提前做了很多:)
答案 0 :(得分:3)
您正在谈论调整屏幕大小,然后您还可以收听调整大小事件(在舞台外),而不是渲染事件(在图像上)。
只有在调整舞台大小时才会触发。
stage.addEventListener(Event.RESIZE, resizeListener);
答案 1 :(得分:1)
我最后听了Render一次作为解决方法,但是如果你在Render处理程序中设置一个断点,你可能会认为它被称为1000次:我会说不好。
我建议将一个resize事件添加到Application标记resize="application_resize(event);
答案 2 :(得分:1)
如果要扩展组件,可以尝试使用优秀的Flex组件生命周期,重写updateDisplayList()方法,将组件定位在您认为合适的位置,同时考虑屏幕大小,元素是否可见等。当然,您可能希望通过一个只调用invalidateDisplayList()的简单函数在内部使用resize事件,确保不会进行任何必要的调用以进行重新定位。这是一个方法/ updateDisplayList()/,在呈现阶段只调用一次。另外,为了将新元素添加到扩展组件中,覆盖createChildren()以创建和添加图像是合理的。在该阶段,不需要任何其他内容,因为如果添加/删除子项,将自动调用updateDisplayList()。
Component Lifecycle Explanation - 这对我有很大的帮助:“)