我在flash中写了一个“动态画廊”。 问题是可以在运行时调整库的子级, 然后我必须重新排列画廊。
现在,当然,我不能重载图库项目,因为它是一个显示对象 是不可预测的。即使我可以强制对项目进行超载,如果动画开始,移动,项目变大,我将如何收到通知。
是否存在某种事件,显示对象是在任何类型的调整大小上调度的?
我愚蠢的解决方案是浏览所有画廊的物品,并在每一毫秒重新排列它们,现在我感觉很脏,我需要承认自己的罪过。
答案 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 ));
}