【问题标题】:Action Script 3. How to add multiple children of 1 instance?动作脚本 3. 如何添加 1 个实例的多个子代?
【发布时间】:2014-05-18 20:47:54
【问题描述】:

我正在创建 Flash 游戏。我需要让玩家生活 - 心脏图像。如果玩家有 5 条生命,则应添加 5 颗心

我试过了:

var lives:Number = 4;
var currentHP = lives;
var heart:Heart = new Heart();
var hpArr:Array = new Array();
function hp() {         
    for (var i=0; i<lives; i++) {
        heart = new Heart();
        hpArr[i] = heart;
        hpArr.push(heart);
        heart.x += heart.width+20;
        addChild(heart);
    }
    trace("Array length" + hpArr.length);
}

这会正确返回 5 trace("Array length" + hpArr.length);,这意味着心已成功添加到数组中。问题是只添加了一颗心。有什么问题?

【问题讨论】:

    标签: actionscript-3 flash actionscript instance addchild


    【解决方案1】:

    像这样更改您的 for 循环:

        for (var i=0; i<lives; i++) {
            heart = new Heart();
            hpArr.push(heart);
            heart.x = ( heart.width + 20 ) * i; // here is the trick!
            addChild(heart);
        }
    

    【讨论】:

    • 谢谢你的回答,我自己发现了这个问题,还是谢谢你!我需要将heart.x += 更改为heart.x =
    • 你能帮我让生活自动更新吗?我已经通过按钮单击对其进行了测试。如果我使用stage.addEventListener(Event.ENTER_FRAME, hp); 它会不停地循环并向数组添加许多元素。还尝试在我需要灰心的功能中使用此hpArr.removeChild.hpArr[1];,但出现错误:Error #1010: A term is undefined and has no properties.
    • @StanislovasKalašnikovas 只是将它们从数组的末尾删除,例如 removeChild(hpArr.pop())
    • 我认为如果心脏收到并活着——当心脏丢失时,我会使用lives++,但没关系,这种方法也会很好。如何将心添加到数组末尾? addChild(hpArr.add())?还是没有?
    • @StanislovasKalašnikovas 你已经用 hpArr.push(heart); 添加了它,现在只需 remove() 他们点击按钮
    猜你喜欢
    • 2013-09-17
    • 2015-06-15
    • 2019-06-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多