Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何使对象反弹? for(变量k:int=0;k_Flash - Fatal编程技术网

Flash 如何使对象反弹? for(变量k:int=0;k

Flash 如何使对象反弹? for(变量k:int=0;k,flash,Flash,只有当x小于0时,才会使其反弹…因此发生的情况是,对象撞到墙上(x小于0)会移回刚刚超过0(实际上是0,因为如果它小于0,则会反弹到0)然后再次开始向墙的方向移动,直到小于0(几乎立即)。因此,您将看到对象刚好卡在墙上(x=0) 我倾向于这样做的一种方法是存储一个不同的方向变量,它是+1或-1。一旦对象通过0(x maxX){ 方向=-1; } //乘以方向以正确移动 moneyVector[i].x+=moneyVector[i].dx*方向; moneyVector[i].y+=moneyV

只有当x小于0时,才会使其反弹…因此发生的情况是,对象撞到墙上(x小于0)会移回刚刚超过0(实际上是0,因为如果它小于0,则会反弹到0)然后再次开始向墙的方向移动,直到小于0(几乎立即)。因此,您将看到对象刚好卡在墙上(x=0)

我倾向于这样做的一种方法是存储一个不同的方向变量,它是+1或-1。一旦对象通过0(x maxX){ 方向=-1; } //乘以方向以正确移动 moneyVector[i].x+=moneyVector[i].dx*方向; moneyVector[i].y+=moneyVector[i].dy; if(moneyVector[i].hitTestObject(字符)) { Config.CurrentStage.removeChild(moneyVector[i]); moneyVector.拼接(i,1); moneyscore+=400; moneytext.text=“Money:+moneyscore.toString(); 钱=新钱; money.dx=随机范围(-5,5); money.dy=随机范围(-5,5); money.x=x[选择PawnPoint()]; money.y=moneysourceY; Config.CurrentStage.addChild(货币); 推(钱); } } }
别忘了将方向存储为每个moneyVector索引的一个变量,并设置你想要的maxX,而不是我的“maxX”

我知道了,我知道问题所在。你是对的,我只是在X小于0时使它反弹。我应该将速度和方向改为原始值的负值,而不是moneyVector[I].x=moneyVector[i].x+-1*moneyVector[i].dx
for (var k:int = 0; k < 1; k++)
        {
            money = new Money;
            money.x = X[chooseSpawnPoint()];
            money.y = moneysourceY;
            money.dx = RandomRange(-5,5);
            money.dy = RandomRange(-5,5);
            Config.CurrentStage.addChild(money);

            moneyVector.push(money);
        }

private function Update(evt:Event)
    {

        for (var i:int = 0; i < moneyVector.length; i++)
        {               
            moneyVector[i].x += moneyVector[i].dx;
            moneyVector[i].y += moneyVector[i].dy;
            if (moneyVector[i].hitTestObject(character))
            {
                Config.CurrentStage.removeChild(moneyVector[i]);
                moneyVector.splice(i, 1);
                moneyscore +=  400;
                moneytext.text = "Money : " + moneyscore.toString();
                money = new Money  ;
                money.dx = RandomRange(-5,5);
                money.dy = RandomRange(-5,5);
                money.x = X[chooseSpawnPoint()];
                money.y = moneysourceY;
                Config.CurrentStage.addChild(money);
                moneyVector.push(money);

            }
            if ( moneyVector[i].x < 0 ) {
                moneyVector[i].x = moneyVector[i].x + -1 * moneyVector[i].dx //<-- cannot bounce back
            }

        }
    }
private function Update(evt:Event) 
{ 

    for (var i:int = 0; i < moneyVector.length; i++) 
    {     
       // Figure out what direction to move           
        if ( moneyVector[i].x < 0 ) { 
            direction = 1; 
        } else if(moneyVector[i].x > maxX) {
             direction = -1;
        }
        // Multiply by direction to move the correct way
        moneyVector[i].x += moneyVector[i].dx * direction;
        moneyVector[i].y += moneyVector[i].dy; 
        if (moneyVector[i].hitTestObject(character)) 
        { 
            Config.CurrentStage.removeChild(moneyVector[i]); 
            moneyVector.splice(i, 1); 
            moneyscore +=  400; 
            moneytext.text = "Money : " + moneyscore.toString(); 
            money = new Money  ; 
            money.dx = RandomRange(-5,5); 
            money.dy = RandomRange(-5,5); 
            money.x = X[chooseSpawnPoint()]; 
            money.y = moneysourceY; 
            Config.CurrentStage.addChild(money); 
            moneyVector.push(money); 

        } 

    } 
}