Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
在Android画布上旋转RectF_Android_Canvas - Fatal编程技术网

在Android画布上旋转RectF

在Android画布上旋转RectF,android,canvas,Android,Canvas,我一直在四处寻找,似乎找不到解决办法。我试图在画布上显示一个在空间中的枪(作为一个RectF),它会自动地用记号法旋转。我正在保存画布,按枪的角度旋转,然后绘制矩形,然后恢复tick方法内部的画布。。。但它只会旋转枪一次。有人知道如何使它连续旋转吗?谢谢 如果有人在寻找类似的东西,这个问题在下面的评论中得到了回答 public class SpaceAnimator implements Animator { // constants private static final int

我一直在四处寻找,似乎找不到解决办法。我试图在画布上显示一个在空间中的枪(作为一个RectF),它会自动地用记号法旋转。我正在保存画布,按枪的角度旋转,然后绘制矩形,然后恢复tick方法内部的画布。。。但它只会旋转枪一次。有人知道如何使它连续旋转吗?谢谢


如果有人在寻找类似的东西,这个问题在下面的评论中得到了回答

    public class SpaceAnimator implements Animator {

// constants
private static final int FRAME_INTERVAL = 60; // animation-frame interval, in milliseconds
private static final int BACKGROUND_COLOR = Color.BLACK; // background color

// paint objects
private Paint whitePaint;
private Paint yellowPaint;
private Paint bluePaint;

//random number generator
Random randomGen = new Random();

//PointF array to hold star positions 
ArrayList<PointF> stars = new ArrayList<PointF>();

//Number of stars
int numberOfStars = 100;

//PointFs for center of the sun and angle of gun
PointF centerOfSun1 = new PointF(300,200);
float angleOfGun = 1;


// constructor
public SpaceAnimator() {

    //Create a white paint object
    whitePaint = new Paint();
    whitePaint.setColor(Color.WHITE);

    //Create a yellow paint object
    yellowPaint = new Paint();
    yellowPaint.setColor(Color.YELLOW); 

    //create a blue paint object
    bluePaint = new Paint();
    bluePaint.setColor(Color.BLUE);

    //Set position of the stars
    for(int i = 0; i < numberOfStars; i++)
    {
        int randStarX = randomGen.nextInt(100); //random X initial position
        int randStarY = randomGen.nextInt(100); //random Y initial position
        stars.add(new PointF(randStarX, randStarY)); //set X and Y positions
    }

}

/**
 * Interval between animation frames
 * 
 * @return the time interval between frames, in milliseconds.
 */
public int interval() {
    return FRAME_INTERVAL;
}

/**
 * The background color.
 * 
 * @return the background color onto which we will draw the image.
 */
public int backgroundColor() {
    // create/return the background color
    return BACKGROUND_COLOR;
}

/**
 * Action to perform on clock tick
 * 
 * @param g the canvas object on which to draw
 */
public void tick(Canvas g) {

    int height = g.getHeight();
    int width = g.getWidth();

    //draw the stars
    for(int i = 0; i < numberOfStars; i++)
    {
        g.drawCircle(stars.get(i).x/100 * width, stars.get(i).y/100 * height, randomGen.nextInt(2), whitePaint);
    }

    //draw the first sun
    g.drawCircle(centerOfSun1.x, centerOfSun1.y, 40, yellowPaint);

    //rotate/draw the gun
    g.save();
    g.rotate(angleOfGun);
    g.drawRect(new RectF(width/2 - 20, height/2 - 20, width/2 + 20, height/2 + 20), bluePaint);
    g.restore();
}
公共类SpaceAnimator实现Animator{
//常数
private static final int FRAME_INTERVAL=60;//动画帧间隔,以毫秒为单位
私有静态最终int BACKGROUND_COLOR=COLOR.BLACK;//背景色
//绘制对象
私人涂料;
私人油漆;
私人油漆;
//随机数发生器
Random randomGen=新的Random();
//用于保持星点位置的PointF阵列
ArrayList stars=新的ArrayList();
//星星数
int numberOfStars=100;
//太阳中心和炮角的点
PointF centerOfSun1=新的PointF(300200);
浮球的浮球角度=1;
//建造师
公共空间动画师(){
//创建白色绘制对象
白色油漆=新油漆();
whitePaint.setColor(颜色.白色);
//创建黄色绘制对象
黄色油漆=新油漆();
黄色油漆。设置颜色(颜色。黄色);
//创建蓝色绘制对象
蓝色油漆=新油漆();
bluePaint.setColor(Color.BLUE);
//设定星星的位置
对于(int i=0;i
您发布的代码中没有任何内容是递增(或递减)角度的

如果这是真的,那么你只会“看到”它第一次旋转1度,然后粘在那里是有道理的。你需要在你的勾选方法的末尾加一条这样的线:

angleOfGun = (angleOfGun + 1) % 360;

好的,这帮了大忙,谢谢。现在,我只需要弄清楚如何让枪围绕一个固定点旋转,因为它现在在一个圆圈中旋转,就像它在绕着什么东西旋转一样。使用旋转(浮动度,浮动px,浮动py)方法围绕枪的中心点旋转。感谢MichaelHey Michael,我正在尝试做一些类似于旋转枪的事情。我试图从枪中射出一些球,以枪的角度,但让它们直射。每当它们射出时,它们都会随着枪旋转,好像它们在轨道上。有什么建议吗我试着不恢复画布,这样我就可以在旋转后沿直线拍摄它们,但它们不在一起。