+ -
当前位置:首页 → 问答吧 → 为什么小球只有一个在动呢?

为什么小球只有一个在动呢?

时间:2011-07-24

来源:互联网

画了个小球,for循环复制出50个,我想让这50个小球在场景中随机的到处乱跑运动,现在却只有一个小球在运动,其他的不动了,怎么回事?
代码这样的:
复制内容到剪贴板
代码:
stage.frameRate = 50;
var speedX:Number = Math.random() * 6 - 3;
var speedY:Number = Math.random() * 6 - 3;
for (var i:uint=0; i<50; i++)
{
    var sp:Sprite=new Sprite();
    sp.graphics.beginFill(0xffffff);
    sp.graphics.drawCircle(0,0,2);
    sp.graphics.endFill();
    addChild(sp);
    sp.x = 200 + Math.random() * 100;
    sp.y = 150 + Math.random() * 100;
}
sp.addEventListener(Event.ENTER_FRAME,onEnterFra);
function onEnterFra(event:Event):void
{
    sp.x +=  speedX;
    sp.y +=  speedY;
    if (sp.x > stage.stageWidth)
    {
        sp.x = 0;
    }
    if (sp.x < 0)
    {
        sp.x = stage.stageWidth;
    }
    if (sp.y > stage.stageHeight)
    {
        sp.y = 0;
    }
    if (sp.y < 0)
    {
        sp.y = stage.stageHeight;
    }
}

作者: 568041915   发布时间: 2011-07-24

因为你的变量 sp 只能对一个对象持有引用

改成下面的代码,就都有了
复制内容到剪贴板
代码:
stage.frameRate=50;
for (var i:uint=0; i<50; i++) {
    var sp:Sprite=new Sprite();
    sp.graphics.beginFill(0xff0000);
    sp.graphics.drawCircle(0,0,2);
    sp.graphics.endFill();
    sp.x=200+Math.random()*100;
    sp.y=150+Math.random()*100;
    addChild(sp).addEventListener(Event.ENTER_FRAME,onEnterFra);    
}
function onEnterFra(event:Event):void {
    var sp:Sprite=event.target as Sprite;
    var speedX:Number=Math.random()*6-3;
    var speedY:Number=Math.random()*6-3;
    sp.x+=speedX;
    sp.y+=speedY;
    if (sp.x>stage.stageWidth) {
        sp.x=0;
    }
    if (sp.x<0) {
        sp.x=stage.stageWidth;
    }
    if (sp.y>stage.stageHeight) {
        sp.y=0;
    }
    if (sp.y<0) {
        sp.y=stage.stageHeight;
    }
}

作者: flash023   发布时间: 2011-07-24

版主,你这个是所有的小球集在中间乱抖动。并没有四散开运动

作者: 568041915   发布时间: 2011-07-24