AS3游戏,收集点,具有相同实例名称的多个影片剪辑,无法正常工作

时间:2013-08-13 07:42:45

标签: android actionscript-3 movieclip multiple-instances

我决定创建一款Android触摸屏游戏。我是一个完整而彻底的初学者,我正在学习。

当你按住屏幕时,我的游戏中有一只大象向上移动,当没有与屏幕接触时,它会下降。目的是收集尽可能多的花生,以获得最高分。非常简单,你会这么认为。

到目前为止,我已经设法达到大象可以与花生碰撞并且花生消失的程度。

我现在的问题是,我不能创建一个以上的花生,使用相同的实例名称“花生”,因为只有一个会起作用而其他人不会被识别。我做了一个很好的谷歌搜索,没有什么真的给了我正确的方法去。有人可以给我一个明确的答案,告诉我该做什么或从哪里去?

如果您需要更多信息,目前我所掌握的代码或图片可以帮助您理解,请告诉我:)

  • 萨曼莎

1 个答案:

答案 0 :(得分:0)

实例名称必须是唯一的,并且您不能使用实例名称来查找一组影片剪辑。你应该使用一个数组,并在创建一个花生时添加它,使用说push(),并收集花生,拼接出来。

事实上,每当你得到一个具有类似功能的多实例类(又名“收集”)时,使用Array来存储对所有这些的引用,这样你就会知道 ALL < / strong>您的实例可以通过该数组访问。

How to work with arrays

示例代码:

var peanuts:Array=new Array();
function addPeanut(x:Number,y:Number):void {
    var peanut:Peanut=new Peanut(); // make a peanut, you do this somewhere already
    peanut.x=x;
    peanut.y=y;
    peanuts.push(peanut); // this is where the array plays its role
    game.addChild(peanut); // let it be displayed. The "game" is whatever container
    // you already have to contain all the peanuts.
}
function removePeanut(i:int):void { 
    // give it index in array, it's better than giving the peanut
    var peanut:Peanut=peanuts[i]; // get array reference of that peanut
    peanuts.splice(i,1); // remove the reference from the array by given index
    game.removeChild(peanut); // and remove the actual peanut from display
}
function checkForPeanuts():void {
    // call this every so often, at least once after all peanuts and player move
    for (var i:int=peanuts.length-1; i>=0; i--) {
        // going through all the peanuts in the array
        var peanut:Peanut=peanuts[i];
        if (player.hitTestObject(peanut)) {
            // of course, get the proper reference of "player"!
            // YAY got one of the peanuts!
            // get some scoring done
            // get special effects, if any
            removePeanut(i); // remove the peanut
        }
    }
}