如果我有一个容器,那里有子显示对象。 容器的大小由孩子的大小决定。当尺寸变化时,我需要做一些适合新尺寸的东西。
因为我没有找到检测它的事件,我使用ENTER_FRAME事件,这很傻。 保留每个最后一帧的大小,并与当前帧进行比较。可以在处理输入帧事件后更改大小,因此在某些情况下,您可能会在下一帧中看到正确的结果。
我不认为这是一个很好的解决方案。请给我一些想法,谢谢。
答案 0 :(得分:2)
没有标准的解决方案。您可以创建一个自定义类来覆盖宽度/高度/ x / y / scaleX / scaleY / scrollRect的设置器以及其他一些属性。孩子们应该扩展这样的课程。
我使用了一个布尔值来防止多次调度,在一帧之后,该标志将被重置。
override public function set width(value:Number):void
{
if (value !== super.width && !isNaN(Number(value)) this.dispatchResize();
super.width = value;
}
override public function set height(value:Number):void
{
if (value !== super.height && !isNaN(Number(value)) this.dispatchResize();
super.height = value;
}
override public function set scaleX(value:Number):void
{
if (value !== super.scaleX && !isNaN(Number(value)) this.dispatchResize();
super.scaleX = value;
}
override public function set scaleY(value:Number):void
{
if (value !== super.scaleY && !isNaN(Number(value)) this.dispatchResize();
super.scaleY = value;
}
private var _hasDispatchedResize:Boolean;
protected function dispatchResize():void
{
// do something
if (!this._hasDispatchedResize)
{
this.dispatchEvent(new Event(Event.RESIZE));
this._hasDispatchedResize = true;
this.addEventListener(Event.ENTER_FRAME, handleEnterFrameOnce);
}
}
private function handleEnterFrameOnce(event:Event):void
{
this.removeEventListener(Event.ENTER_FRAME, handleEnterFrameOnce);
this._hasDispatchedResize = false;
}
现在,在容器类中,您可以收听Event.RESIZE
个孩子。您不确定该值是否实际更改(如果在MovieClip上更改了帧),但在大多数情况下这将起作用。在调度调整大小之前,我在这个setter中添加了一个额外的检查。这取决于具体情况。
答案 1 :(得分:0)
我要做的是无论函数调整子项的大小,都要向其添加自己的调度事件,以便广播发生的大小更改。
//Never forget to import your classes.
import flash.events.EventDispatcher;
import flash.events.Event;
//Our custom listener listens for our custom event, then calls the function we
//want called when children are resized.
addEventListener("childResized", honeyIResizedTheChildren);
function resizingLikeFun(){
datClip.width++;//they be resizin, yo.
dispatchEvent(new Event("childResized"));//Our custom event
}
function honeyIResizedTheChildren(e:Event){
trace("Giant Cheerios");
//Whatever you want to do when the children are resized goes here.
}
我假设有一些代码,所以请告诉我这是否完全适用于您。