动作脚本3 - 我需要知道子对象是否已经动态地改变了它的大小!救命?

时间:2010-08-14 19:21:35

标签: flash actionscript-3 events resize

我在flash中写了一个“动态画廊”。 问题是可以在运行时调整库的子级, 然后我必须重新排列画廊。

现在,当然,我不能重载图库项目,因为它是一个显示对象 是不可预测的。即使我可以强制对项目进行超载,如果动画开始,移动,项目变大,我将如何收到通知。

是否存在某种事件,显示对象是在任何类型的调整大小上调度的?

我愚蠢的解决方案是浏览所有画廊的物品,并在每一毫秒重新排列它们,现在我感觉很脏,我需要承认自己的罪过。

1 个答案:

答案 0 :(得分:2)

您可以通过两种方式解决这个问题:子对象在其大小更改时调度事件,或者您使用EnterFrame事件继续侦听大小的任何更改,后者更接近您的“脏”解决方案:)我通常会选择第一个解决方案,但这并不是说第二个解决方案不好,这是一个选择问题。

  • 是否存在某种显示对象的事件,该事件是在任何调整大小上调度的?

您可以创建自己的。

package events
{
import flash.events.Event;

public class SizeEvent extends Event
{
    public static const CHANGE:String = "Size Changed";
    public var params:Object;
    public function SizeEvent(type:String, params:Object)
    {
        super(type);
        this.params = params;
    }

    override public function clone():Event
    {
        return new SizeEvent(type, params );
    }
}
}

因此,当您将项目添加到图库时,请编写以下内容:

  galleryItem.addEventListener(SizeEvent.CHANGE , sizeEventListener );

动画以galleryItem结束时

 private function onAnimationComplete():void
 {
    var params:Object = {x: this.x , y:this.y , width:this.width , 
                          height:this.height, //any info you need  etc... };

    dispatchEvent( new SizeEvent( SizeEvent.CHANGE , params ));
 }