AS3删除ENTER_FRAME中的项目

时间:2013-06-28 14:07:58

标签: actionscript-3 flash-cs5

我已经生成了随机气泡,我使用了网上找到的代码。现在我想要一个隐藏随机气泡的点击事件。

这正是我使用的代码,

http://good-tutorials-4u.blogspot.com/2009/04/flash-bubbles-with-actionscript-3.html

我的气泡运转良好......

我试过这个,到目前为止没有运气..

addEventListener(MouseEvent.CLICK, eventListener);


function eventListener(eventObject:MouseEvent) {

        bubbles[i].splice(i,1,bubbles[i]);

}

我尝试使用数组,但它会返回此输出 TypeError:错误#2007:参数child必须为非null。     在flash.display :: DisplayObjectContainer / removeChild()     在Function /()

TypeError:错误#2007:参数child必须为非null。     在flash.display :: DisplayObjectContainer / removeChild()     在Function /()

4 个答案:

答案 0 :(得分:2)

如果你在数组中有气泡,这应该有用。

var randomIndex:int = int(Math.random() * bubbles.length);
parent.removeChild(bubbles[randomIndex]);
bubbles.splice(randomIndex, 1);

请注意,您还必须从显示列表中删除气泡。

答案 1 :(得分:0)

您可以尝试创建一个没有原始数组中的随机元素的新数组。然后只需将旧数组重新分配给新数组,例如

// get the random index to remove element at
var randomIndex:int = 0 + bubbles.length * Math.random();
var index:int = 0;

// create new array containing all apart from the chosen one
var newBubbles:Array = [];
for each (var item:Object in bubbles) {
    if (index != randomIndex) {
        newBubbles.push(item);
    }
    index++;
}

// here you go new array without one random item
bubbles = newBubbles;

或类似的东西。

答案 2 :(得分:0)

这里只是对Baris Usakli代码的一个小修改,如果你想要删除被点击的代码,那就是这样。

var bubbles:Array = [];
function makeBubbles()
{
    for(var i:int=0;i<100;i++)
    {
        var bubble:Bubble = new Bubble();
        bubbles.push(bubble);
        addChild(bubble);
        bubble.addEventListener(MouseEvent.CLICK, eventListener);
     }
}


function eventListener(eventObject:MouseEvent) {

    var clickedBubbleIndex:int = bubbles.indexOf(eventObject.currentTarget);
    parent.removeChild(eventObject.currentTarget);
    bubbles.splice(clickedBubbleIndex:int, 1);

}

答案 3 :(得分:0)

试试这个

bubbles.addEventListener(MouseEvent.CLICK, eventListener); // place this listener in moveBubbles function.

function eventListener(eventObject:MouseEvent):void {

     eventObject.currentTarget.visible = false;

}