flash - Flash 设计器中的 AS3 组件

标签 flash actionscript-3 actionscript

在 ActionScript 2 项目中,我可以创建一个新的 MovieClip,在库中右键单击它并选择“组件定义”以添加可以在 MovieClip 中引用的参数。可以在 MovieClip 的属性中轻松更改此参数。

现在,我正在处理一个 ActionScript 3 项目,但一直无法找到一种方法来获取在这些参数中传递的值。

我定义了一个名为“textToDisplay”的参数,但是当我在第一帧的 Actions 中编写以下内容时,出现错误:

trace(textToDisplay);

这是错误:

1120: Access of undefined property textToDisplay.

您知道如何捕获该参数的值吗?

谢谢

PS:我在 Windows XP 上使用 Adob​​e Flash CS3 Professional

最佳答案

考虑到要找到有关自定义组件设置的信息有多么困难,我想我会根据我的经验来澄清该过程的某些方面。

初始化事件:

除了一个异常(exception),上面的 aaaidan 示例大部分都是正确的。

addEventListener(Event.INIT, onInit);

应该是:

loaderInfo.addEventListener(Event.INIT, onInit);

DisplayObject 的 loaderInfo 属性引用了一个 LoaderInfo,您的组件从中获取其参数设置。 INIT 事件在获取数据时被调用(或者您可以使用 COMPLETE 事件,它应该在 INIT 之后直接触发)

可检查的元数据:

当您使用元数据 [Inspectable] 标签设置要访问的属性时,您还可以使用以下方法定义默认值:

 [Inspectable(defaultValue="whatevervalue")]

根据我的经验,参数似乎无法处理除字符串(可能还有数字)以外的任何内容,因此我建议使用 set 函数来获取字符串值并使用它们来获取您可能需要的其他值。例如,如果你想加载一个特定命名类的新实例

 [Inspectable(defaultValue="flash.display.Sprite")]
public function set className(value:String):void{
       var ClassReference:Class = getDefinitionByName(value) as Class;
       _class = new ClassReference();
}

在此示例中,如果参数设置为“flash.display.Sprite”,则调用“new _class()”将创建一个新的 Sprite 实例。

设置大小函数:

如果您希望您的自定义组件以一种不同于简单地拉伸(stretch)高度和宽度值的方式调整大小,您需要一个公共(public) setSize 函数。每次在 Flash 中调整组件大小时都会调用此函数。

public function setSize(w:Number, h:Number):void{
   _menuWidth = w;
   _menuHeight = h;
}

现在,当您在 Flash 中调整组件大小时,这非常有效,但是一旦您实际发布 swf 文件,您会注意到它切换回拉伸(stretch)宽度和高度,而不是使用您的 setSize 函数(我不知道为什么,但这就是它的作用).要解决这个问题,在您的 onInit 函数中,您需要获取宽度和高度,将它们提供给您的 setSize,然后将 scaleX 和 scaleY 值重置回 1:

public function onInit(e:Event):void{
   setSize(width,height);
   scaleX = 1;
   scaleY = 1;
   //add other functions that need to be run once the parameters are loaded
}

(如果有人发现更简单的方法,请告知)

希望这可以帮助人们启动和运行他们的自定义组件。

关于flash - Flash 设计器中的 AS3 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/322361/

相关文章:

actionscript-3 - TextField 小写行

actionscript-3 - 将光标(闪烁插入符号)放入输入 TextField 以供 AS3 中的用户输入。

arrays - 跳过 “for each”循环中的第一个元素?

flash - Flash 中的 onMouseUp/Down 和 onPress/Release 事件有什么区别?

javascript - Haxe -> JS switch 语句分支错误(Haxe -> 相同代码的 Flash 工作正常),为什么?

c++ - 具有 WS_EX_LAYERED 窗口样式的 Adob​​e Air

javascript - 如何预加载 Flash 视频和图像?

actionscript-3 - 我的 RED5 服务器中的代码 NetConnection.Connect.SSLHandshakeFailed

flash - 使用动态数据通过 Flash 为网站进行 3d 绘图/空间

actionscript-3 - 当我运行 Flash 游戏时,图形分辨率会降低