移动正在移动的位图\对象

时间:2015-03-29 14:04:04

标签: android bitmap

我有一个使用两个不同点移动位图的函数,一个用于当前位置,一个用于“目标”位置,这样我检查当前位置x \ ​​y是否小于或大于目标位置把它移向它。

这就是我在代码中所做的:

    public void fly(float x1,float y1,float scale){
    flyTo.x=(int)x1; 
    flyTo.y=(int)y1;
    mCurrentState=BossState.Flying; 
}

并在更新时:

    private void UpdateAll(){
switch (mCurrentState) {
case Flying:
    if(flyTo.x==position.x&&flyTo.y==position.y){
        mCurrentState=BossState.Normal;
    }
    else{
        if(flyTo.x>position.x){
            position.x+=speed;
            wiggleTo.x+=speed;
        }
        else if(flyTo.x<position.x){
            position.x-=speed;
            wiggleTo.x-=speed;
        } 
        if(flyTo.y>position.y){
            position.y+=speed;
            wiggleTo.y+=speed;
        }
        else if(flyTo.y<position.y){
            position.y-=speed;
            wiggleTo.y-=speed;
        }
    }
    break;

这非常有效,但是现在我使位图摆动\摇动,我用自定义的点数组完成了这一点,并且对于每个点我调用了fly函数并将位图移向了。这也很有效,并使位图摆动。但问题出现了:连接摆动和飞行功能,我希望能够移动已经移动的位图。

我尝试为摆动创建另一个点,并通过这样做创建自己的函数:

public void wigglefly(float x1,float y1,float scale){
    wiggleTo.x=position.x+(int)x1; 
    wiggleTo.y=position.y+(int)y1;
}

并在更新时:

    if(wiggleTo.x==position.x&&wiggleTo.y==position.y){
    }
    else{
        if(wiggleTo.x>position.x){
            position.x+=speed;
        }
        else if(wiggleTo.x<position.x){
            position.x-=speed;
        }
        if(wiggleTo.y>position.y){
            position.y+=speed;
        }
        else if(wiggleTo.y<position.y){
            position.y-=speed;
        }
    }

也是为了飞行我也摇摆了,

case Flying:
    if(flyTo.x==position.x&&flyTo.y==position.y){
        mCurrentState=BossState.Normal;
    }
    else{
        if(flyTo.x>position.x){
            position.x+=speed;
            wiggleTo.x+=speed;
        }
        else if(flyTo.x<position.x){
            position.x-=speed;
            wiggleTo.x-=speed;
        } 
        if(flyTo.y>position.y){
            position.y+=speed;
            wiggleTo.y+=speed;
        }
        else if(flyTo.y<position.y){
            position.y-=speed;
            wiggleTo.y-=speed;
        }
    }

但是会发生的是位图飞向我称之为怪异的点,一旦它到达目标点,位图就会停止移动并且不会摆动\抖动。

0 个答案:

没有答案