Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 动作脚本3-我需要知道是否有子对象更改了它';动态调整大小!帮忙?_Flash_Actionscript 3_Events_Resize - Fatal编程技术网

Flash 动作脚本3-我需要知道是否有子对象更改了它';动态调整大小!帮忙?

Flash 动作脚本3-我需要知道是否有子对象更改了它';动态调整大小!帮忙?,flash,actionscript-3,events,resize,Flash,Actionscript 3,Events,Resize,我正在用flash写一种“动态画廊”。 问题是库的子级可以在运行时调整大小, 然后我必须重新安排画廊 现在,当然,我不能过载画廊项目,因为它是一个显示对象 这是不可预测的。即使我可以强制物品超载,如果动画开始,物品移动,物品变大,我将如何得到通知 在任何类型的调整大小时调度的显示对象是否存在某种类型的事件??? 我愚蠢的解决方案是浏览所有画廊的项目,每给定毫秒重新排列一次,现在我觉得自己很脏,我需要坦白我的罪过。你可以通过两种方式解决这个问题,要么子对象在其大小改变时发送事件,要么你通过Ente

我正在用flash写一种“动态画廊”。 问题是库的子级可以在运行时调整大小, 然后我必须重新安排画廊

现在,当然,我不能过载画廊项目,因为它是一个显示对象 这是不可预测的。即使我可以强制物品超载,如果动画开始,物品移动,物品变大,我将如何得到通知

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


我愚蠢的解决方案是浏览所有画廊的项目,每给定毫秒重新排列一次,现在我觉得自己很脏,我需要坦白我的罪过。

你可以通过两种方式解决这个问题,要么子对象在其大小改变时发送事件,要么你通过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 ));
 }

+第一种解决方案为1@mik如果没有动画,那么您可以扩展子对象(假设它是一个MovieClip)并覆盖宽度和高度的setter属性,以便可以执行类似的dispatchEvent。@Allan谢谢!我从来没有使用第二种解决方案实际上。。。但我认为了解这两种方法很好谢谢你的答案。我知道覆盖方法,但它不是解决方案,因为库项目未知。帕特里克也一样。。我不知道动画何时开始或何时开始,因为它与库无关,它是项目自己的动画。另一种解决方案可能是强制使用ItemGalleryDispatcher接口,该接口应该由每个库项目实现,并且需要实现一个“addItemListener”,它将是库本身,报告大小变化的责任将是库项目本身。但这会使事情复杂化。谢谢你的回答