Actionscript 3,访问符号属性(AS Linkage)

Posted

技术标签:

【中文标题】Actionscript 3,访问符号属性(AS Linkage)【英文标题】:Actionscript 3, access Symbol properties (AS Linkage) 【发布时间】:2014-10-06 06:34:51 【问题描述】:

我在Flash IDE 中创建了一个新符号,我将它设置为导出为Actionscript,它的类名是itemCoin

我的舞台现在有 3 个该类的影片剪辑,我该怎么做:

数一数itemCoin 中有多少人在舞台上 操纵它们,分别设置和获取它们的 x、y 等。我试过 itemCoin[0].x [1] [2]...等,但它会引发错误 在需要时将它们从舞台上移除 添加一个事件侦听器,在删除itemCoin 时执行一个函数?

【问题讨论】:

【参考方案1】:

实例名称用于引用对象的实例。

例如,如果您有一个ItemCoin 类型的符号(请注意,类型的命名约定通常以大写字母开头):

当你在舞台上放置实例时,你给它们一个实例名称来引用它们(请注意,实例的命名约定通常是驼峰式):

现在,可以通过引用代码中的实例名称来访问属性:

itemCoin1.x = 50;
itemCoin1.y = 25;

从舞台上移除它:

removeChild(itemCoin1);

为 itemCoin1 实例添加一个事件监听器,以便在它被删除时:

import flash.events.Event;

itemCoin1.addEventListener(Event.REMOVED, removedHandler);

function removedHandler(event:Event):void 
    trace("itemCoin1 was removed");


removeChild(itemCoin1);

虽然通常是一种糟糕的做法,但您可以迭代所有子项以识别实例。例如,要计算 ItemCoins 的数量:

import flash.display.DisplayObject;

var count:uint = 0;

for (var i:uint = 0; i < numChildren; i++) 
    var obj:DisplayObject = getChildAt(i);

    if (obj is ItemCoin) 
        trace("Found " + ++count + " item coins so far.");
    

要全面搜索显示列表,您必须遍历所有显示对象的子对象。

如果知道舞台上的实例总数如此重要,那么在组件内或工厂类中定义一些 ActionScript 以在添加到舞台和从舞台移除时引用计数可能是一个更好的主意。

【讨论】:

谢谢,最后一个方法正是我需要的,我使用了一个数组来存储实例 ID。我想这是因为它可以在 IDE 中工作而不是使用 .as 类。

以上是关于Actionscript 3,访问符号属性(AS Linkage)的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 AS3 Trace LoaderInfo属性

ActionScript 3 AS3 flash.system.Capabilities属性

ActionScript 3 AS3加载并访问JSON数据示例

ActionScript 3 如何使用AS3访问查询字符串参数

ActionScript 3 AS3 - 如何从另一个类访问文档类

ActionScript 3 使用TLFTextField时AS3 Bug访问FlashVars(解决方法)