Flash CC 中的可检查参数不获取值
Posted
技术标签:
【中文标题】Flash CC 中的可检查参数不获取值【英文标题】:Inspectable parameters in Flash CC do not acquire value 【发布时间】:2015-02-14 04:10:57 【问题描述】:在迁移到 Flash CC 时,我的 flash 项目出现以下问题。
考虑这个类定义:
public class Test extends MovieClip
[Inspectable(type="String", defaultValue="val")]
public var param :String;
public function Test()
trace(param);
我有一个符号“符号 1”,它(通过库面板属性)链接到类 Test 并且(通过组件定义)也设置为类 Test,并且此对话框显示参数“param”值为“val”。我在场景中有一个符号 1 的实例。 正如预期的那样,参数“param”出现在该实例的属性中,值为“val”。
唯一的问题是,在运行时,参数“param”的值等于null,正如在执行类构造函数时所确认的那样,输出“null”。
有人知道为什么会这样吗?
【问题讨论】:
【参考方案1】:Flash 需要 Inspectable 标记来填充组件属性面板,以便手动设置值。这些参数(默认和用户输入)在实例化时不可用,但它们仅在下一帧可用。 为了在实例化时具有默认值,您还必须在变量本身上设置默认值。
[Inspectable(type="String", defaultValue="val")]
public var param :String = "val";
此外,在您疯狂访问使用属性检查器插入的值之前,请记住在访问这些值之前添加一个输入帧事件。
我通常在我的组件中做的事情: 1 - 在可检查和变量中填充默认值 2 - 在实例化时,如果接收到参数对象,那么我知道它是在代码中实例化的,并且值在参数对象内 3 - 如果未收到参数对象,则在时间轴上直观地完成实例化,因此我在下一帧访问属性
【讨论】:
谢谢。我不知道该值仅在下一帧中分配。这种行为有什么合理的解释吗? 是的,有一个合乎逻辑的解释,不是很合理:) 但合乎逻辑。由于属性是在实例本身上定义的,因此执行堆栈可能首先实例化组件本身,然后从属性中获取值。事实上,通常在 Adobe 组件中,属性与设置器相关,而不是与变量相关,因此一旦它们被抓取,就会执行一些代码。我花了一段时间才弄清楚这一点。我猜你也是在不扩展 UIComponent 类的情况下编写组件吧? 是的,我不扩展 UIComponent。在这种情况下会有所帮助吗?不幸的是,我既不能在组件类中填充可检查项也不能填充变量,因为我不想修改类——我想使用 JSFL 在舞台上自动设置类的特定实例的可检查值。跨度> 抱歉回复晚了。我想从逻辑上扩展 UIComponent 不会有帮助,但我从未尝试过,因此我不能说。 顺便说一句,我确实发现了组件中的另一个故障。如果组件定义代码中的任何地方有“Vector.”。我的意思是,在任何地方,作为变量类型,或实例化,在任何地方。如果那句话在代码中,那么组件定义的变化将不会反映在组件检查器中!!!是不是很奇怪?它确实把我逼疯了,别问我是怎么到那里的 :)以上是关于Flash CC 中的可检查参数不获取值的主要内容,如果未能解决你的问题,请参考以下文章
where 条件中的可选参数 - 如何提高性能 - PL/SQL
如何通过 XMLUI 从 JSFL 中的 Flash 创作中获取值?
Flash CC 中的电影资源管理器 (ALT + F3)。现在去掉了吗?