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

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

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

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

【问题讨论】:

    标签: actionscript-3 flash class actionscript movieclip


    【解决方案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 类。
    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 2017-02-05
    • 2016-04-16
    相关资源
    最近更新 更多