58,452
社区成员




package com.gameley.tar2.xui.components;
import a5game.motion.XColorRect;
import a5game.motion.XDelayTime;
import a5game.motion.XFadeTo;
import a5game.motion.XFiniteTimeMotion;
import a5game.motion.XLabelAtlas;
import a5game.motion.XMotion;
import a5game.motion.XMotionDelegate;
import a5game.motion.XMotionInterval;
import a5game.motion.XMotionNode;
import a5game.motion.XMoveTo;
import a5game.motion.XSequence;
import a5game.motion.XSprite;
import android.graphics.Color;
import com.gameley.race.view.ComponentBase;
import com.gameley.tar2.data.ResDefine;
import com.gameley.tools.Debug;
import com.gameley.tools.ScreenManager;
/**
*
* 游戏启动时显示的小loading
* @author weitao
*
*/
public class LittleLoadingLayer extends ComponentBase implements XMotionDelegate
{
private XLabelAtlas process_percent;
private XSprite quan1 = null;
private XSprite quan2 = null;
public LittleLoadingLayer()
{
super();
init();
}
@Override
public void init()
{
super.init();
//XSprite bg = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_0);
XSprite bg = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_TEX);
bg.setPos(ScreenManager.sharedScreenManager().getWidth()-bg.getWidth()/2, 440);
this.addChild(bg);
//quan1 = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_1);
quan1 = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_LOGO);
quan1.setPos(-bg.getWidth()/2-30, 0);
bg.addChild(quan1);
//quan2 = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_2);
quan2 = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_DIQIU);
quan2.setPos(-bg.getWidth()/2-30, 0);
bg.addChild(quan2);
XSprite hei = new XSprite(ResDefine.LITTLELOADINGVIEW.LOADING_XIAO_3);
hei.setPos(-bg.getWidth()/2-30, 0);
bg.addChild(hei);
process_percent = new XLabelAtlas('0', ResDefine.NEW_LOADINGVIEW.LOADING_SHUZI_JINDU,
0+":", 12);
process_percent.setColor(0x00b8ff);
process_percent.setPos(0,0);
hei.addChild(process_percent);
// pointMotion();
}
// public void pointMotion()
// {
// point.setAlpha(0);
// point.setPos(-point_bg.getWidth()/2, 0);
// sequence = null;
//
// XMotionInterval moveto = new XMoveTo(2.0f, point_bg.getWidth()/2, 0);
// XMotionInterval fadein = new XFadeTo(0.6f, 1.0f);
// XMotionInterval dely = new XDelayTime(0.8f);
// XMotionInterval fadeout = new XFadeTo(0.6f, 0);
// XFiniteTimeMotion[] fa = new XFiniteTimeMotion[3];
// fa[0] = fadein;
// fa[1] = dely;
// fa[2] = fadeout;
// sequence = new XSequence(fa);
// point.runMotion(moveto);
// point.runMotion(sequence);
// sequence.setDelegate(this);
// }
private int p = 0;
@Override
public void cycle(float dt)
{
super.cycle(dt);
p++;
quan1.setRotation(-p*3.6f);
quan2.setRotation(-p*2.4f);
// if (logoAm != null)
// {
// logoAm.cycle(dt);
// }
if (f_time > 0)
{
f_time -= dt;
if (f_time <= 0)
{
process_percent.setString((int)f_start + ":");
f_time = 0;
f_start = f_now;
}else
{
f_start += f_v*dt;
if (f_start >= 99)
{
f_start = 99;
}
process_percent.setString((int)f_start + ":");
}
}
}
private float f_time = 0;
private float f_v = 0;
private float f_start = 0;
private float f_now = 0;
private float f_s = 0;
public void setPercent(int percent)
{
f_time = .6f;
f_now = percent;
f_s = f_now - f_start;
f_v = f_s / f_time;
}
@Override
public void onMotionFinish(XMotion motion, XMotionNode node)
{
// if (motion == sequence)
// {
// pointMotion();
// }
}
}
谢谢大神,这是我的代码,我旋转的只有98行到103行那边,貌似不能新建类了。只能在这里面改
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
/**
* @author ZhengYesheng
*/
public class RotateImageCanvas extends Canvas implements Runnable
{
private static final long serialVersionUID = -1997487731464495923L;
BufferedImage img;
BufferedImage rotatedImg;
int degress = 0;
public RotateImageCanvas(BufferedImage img)
{
super();
this.img = img;
new Thread(this).start();
}
@Override
public void run()
{
while (true)
{
//A,与B的代码配合决定旋转的速度
degress += 1;
degress %= 360;
repaint();
try
{
if (degress == 0)
{
//绕一周后等待的时间在这里设置
Thread.sleep(3 * 1000);
}
else
{
//考虑到视觉平滑,这里不应大约40。
Thread.sleep(30);
}
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void paint(Graphics graphics)
{
super.paint(graphics);
//获取旋转指定角度后的图片。为了避免累计误差,这里是用原始图像旋转的
rotatedImg = rotateImage(img, degress);
//绘制旋转后的图片
graphics.drawImage(rotatedImg, 0, 0, this);
}
/**
* 旋转图片为指定角度。
* 注意:1、这个方法实现了图像的基于中点的旋转,要想绕指定点,需要配合Matrix类
* 2、为避免图像被裁切,结果图片的尺寸也需要动态计算
* 3、现在旋转后有黑色背景,如果不需要这个效果,需要设置结果图片的Alpha模式
*
* @param bufferedimage
* 目标图像
* @param degree
* 旋转角度
* @return
*/
private BufferedImage rotateImage(BufferedImage bufferedimage, int degree)
{
int w = bufferedimage.getWidth();
int h = bufferedimage.getHeight();
int type = bufferedimage.getColorModel().getTransparency();
BufferedImage img;
Graphics2D graphics2d;
(graphics2d = (img = new BufferedImage(w, h, type)).createGraphics())
.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);
graphics2d.drawImage(bufferedimage, 0, 0, null);
graphics2d.dispose();
return img;
}
}