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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.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 - Fatal编程技术网

Flash 高度更改为3的自定义事件

Flash 高度更改为3的自定义事件,flash,actionscript-3,Flash,Actionscript 3,如何添加事件侦听器以检测DisplayObject的高度何时更改 我有一个带有边框的保持精灵,当里面的任何对象改变高度或被添加时,它需要调整大小 谢谢 Josh创建自定义事件类: package com { class ChildResizeEvent extends Event { public static var RESIZE:String = "resize"; public static var ADDED:String = "added

如何添加事件侦听器以检测DisplayObject的高度何时更改

我有一个带有边框的保持精灵,当里面的任何对象改变高度或被添加时,它需要调整大小

谢谢


Josh

创建自定义事件类:

package com
{
    class ChildResizeEvent extends Event
    {
        public static var RESIZE:String = "resize";
        public static var ADDED:String = "added";
    }
}
在主Sprite MXML中,您可以使用:

<mx:Metadata>
    [Event(name="onChildResize", type="com.ChildResizeEvent")]
</mx:Metadata>

创建自定义事件类:

package com
{
    class ChildResizeEvent extends Event
    {
        public static var RESIZE:String = "resize";
        public static var ADDED:String = "added";
    }
}
在主Sprite MXML中,您可以使用:

<mx:Metadata>
    [Event(name="onChildResize", type="com.ChildResizeEvent")]
</mx:Metadata>

我想这是一个闪现,而不是一个灵活的问题。。。这就是为什么
mx.events.ResizeEvent
(由UIComponent和子类调度)和所有这些时髦的Flex东西都无法工作的原因。。。如果您确实使用Flex和UIComponents,那么这是最好的方法

问题是,此事件未生成

  • 您可以对任何内置类进行子类化,覆盖宽度、高度、x、y、scaleX、scaleY、transform和visible的访问器,以获取大多数信息
  • 您必须确保任何对象都是自定义类的实例。。。您将无法使用startDrag,因为它绕过了访问器
  • 你几乎没有机会发现,如果有人利用子对象<代码>图形是
    最终版
    。。。除此之外,当使用getter时,重写getter并设置超时,以在1毫秒后检查更改(并确保在最大值时有1个超时)
这不仅仅是一个骗局,需要大量的开发和调试时间,这将是一个麻烦,因为你必须绝对确保,所有的东西(还有任何库符号,如果你像我想象的那样使用CS3/CS4的话)。。。由于自定义访问器发送的所有事件,将消耗相当大的性能

实际上,最简单的事情是观察enterframe上的宽度/高度,如果它们从一帧更改到另一帧,则重新绘制边框。。。这更有意义,因为如果您试图捕获可能意味着调整大小的任何操作,您不需要在一帧中多次重新绘制边界,这是一种很可能发生的效果。。。实际上,比较两个浮动非常便宜…:)

希望这有助于

格里茨


back2dos

我想这是一个闪现的问题,而不是一个灵活的问题。。。这就是为什么
mx.events.ResizeEvent
(由UIComponent和子类调度)和所有这些时髦的Flex东西都无法工作的原因。。。如果您确实使用Flex和UIComponents,那么这是最好的方法

问题是,此事件未生成

  • 您可以对任何内置类进行子类化,覆盖宽度、高度、x、y、scaleX、scaleY、transform和visible的访问器,以获取大多数信息
  • 您必须确保任何对象都是自定义类的实例。。。您将无法使用startDrag,因为它绕过了访问器
  • 你几乎没有机会发现,如果有人利用子对象<代码>图形是
    最终版
    。。。除此之外,当使用getter时,重写getter并设置超时,以在1毫秒后检查更改(并确保在最大值时有1个超时)
这不仅仅是一个骗局,需要大量的开发和调试时间,这将是一个麻烦,因为你必须绝对确保,所有的东西(还有任何库符号,如果你像我想象的那样使用CS3/CS4的话)。。。由于自定义访问器发送的所有事件,将消耗相当大的性能

实际上,最简单的事情是观察enterframe上的宽度/高度,如果它们从一帧更改到另一帧,则重新绘制边框。。。这更有意义,因为如果您试图捕获可能意味着调整大小的任何操作,您不需要在一帧中多次重新绘制边界,这是一种很可能发生的效果。。。实际上,比较两个浮动非常便宜…:)

希望这有助于

格里茨

back2dos

想法 起初,我很惊讶DisplayObject类的实现在其宽度和高度属性更改或内容大小重新计算时没有分派Event.RESIZE事件,但出于性能原因,这很有意义

我曾想过使用Event.RENDER事件,但我在一个文本字段上监听它,我正在通过脚本疯狂地调整它的大小。。。尽管文本被重新包装,框在扩展,光标在闪烁。。。它从未触发过一个渲染事件。令人惊讶的是,它只在文本更改时触发渲染事件,这正好说明渲染事件是多么无用

回答。。。关注您期望DisplayObject更改大小的环境或频率。 我建议你:

  • Dispatch Event.RESIZE事件来自您创建的DisplayObject的任何自定义子类。或
  • 使用Event.ENTER_FRAME事件监视您希望更改尺寸的任何DisplayObject的宽度和高度
  • 从逻辑上讲,您选择的方法应取决于您对DisplayObject改变大小的可能性的了解:

    • 如果您希望它意外更改大小(例如,像动态粒子系统一样)。。。然后,使用ENTER_FRAME监视其不可预测的维度是有意义的,特别是如果您确定它的维度可能会改变每一帧
    • 或者,如果您知道对象仅在特定条件下(例如,在TextField的Event.CHANGE事件期间)或是您自己创建的类时才会调整大小。。。然后,您应该知道您所做的操作是否会导致大小更改,只需从类中分派Event.RESIZE事件即可
    思想 起初,我很惊讶DisplayObject类的实现在其宽度和高度属性更改或内容大小重新计算时没有发送Event.RESIZE事件,但它会使