//上
//"上"+y);
mRenderer.action=3;
DrawAnimation();
}
elseif(y>mRenderer.height/2.0+(1.5*mRenderer.width)/6){
//下
//"下"+y);
mRenderer.action=4;
DrawAnimation();
}
else{
mRenderer.action=0;
}
}
break;
}
mPreviousX=x;
mPreviousY=y;//保存这次点
returntrue;
}
privatevoidDrawAnimation(){
ChangeMoveByAction();//确定是哪个面旋转
mRenderer.angle=0;
while(mRenderer.angle<85){//绘制旋转效果
mRenderer.angle=mRenderer.angle+5;
try{
Thread.sleep(40);
}
catch(InterruptedExceptione){
}
requestRender();
}//绘制旋转效果
mRenderer.angle=0;
mRenderer.action=0;
DrawColorChange();//改变颜色
requestRender();
}
privatevoidDrawColorChange(){
switch(mRenderer.move)
{
case70:
LeftShift(0*27+0*3,0*27+6*3,0*27+8*3,0*27+2*3);
LeftShift(0*27+1*3,0*27+3*3,0*27+7*3,0*27+5*3);
LeftShift(1*27+6*3,5*27+8*3,4*27+2*3,2*27+0*3);
LeftShift(1*27+7*3,5*27+5*3,4*27+1*3,2*27+3*3);
LeftShift(1*27+8*3,5*27+2*3,4*27+0*3,2*27+6*3);
break;
case66:
LeftShift(3*27+0*3,3*27+6*3,3*27+8*3,3*27+2*3);
LeftShift(3*27+1*3,3*27+3*3,3*27+7*3,3*27+5*3);
LeftShift(1*27+0*3,2*27+2*3,4*27+8*3,5*27+6*3);
LeftShift(1*27+1*3,2*27+5*3,4*27+7*3,5*27+3*3);
LeftShift(1*27+2*3,2*27+8*3,4*27+6*3,5*27+0*3);
break;
case85:
LeftShift(1*27+0*3,1*27+6*3,1*27+8*3,1*27+2*3);//////////
LeftShift(1*27+1*3,1*27+3*3,1*27+7*3,1*27+5*3);
LeftShift(0*27+0*3,2*27+0*3,3*27+0*3,5*27+0*3);
LeftShift(0*27+1*3,2*27+1*3,3*27+1*3,5*27+1*3);
LeftShift(0*27+2*3,2*27+2*3,3*27+2*3,5*27+2*3);
break;
case68:
LeftShift(4*27+0*3,4*27+2*3,4*27+8*3,4*27+6*3);
LeftShift(4*27+1*3,4*27+5*3,4*27+7*3,4*27+3*3);
LeftShift(0*27+6*3,2*27+6*3,3*27+6*3,5*27+6*3);
LeftShift(0*27+7*3,2*27+7*3,3*27+7*3,5*27+7*3);
LeftShift(0*27+8*3,2*27+8*3,3*27+8*3,5*27+8*3);
break;
case82:
LeftShift(2*27+0*3,2*27+6*3,2*27+8*3,2*27+2*3);
LeftShift(2*27+1*3,2*27+3*3,2*27+7*3,2*27+5*3);
LeftShift(1*27+2*3,0*27+2*3,4*27+2*3,3*27+6*3);
LeftShift(1*27+5*3,0*27+5*3,4*27+5*3,3*27+3*3);
LeftShift(1*27+8*3,0*27+8*3,4*27+8*3,3*27+0*3);
break;
case76:
LeftShift(5*27+0*3,5*27+6*3,5*27+8*3,5*27+2*3);
LeftShift(5*27+1*3,5*27+3*3,5*27+7*3,5*27+5*3);
LeftShift(1*27+0*3,3*27+8*3,4*27+0*3,0*27+0*3);
LeftShift(1*27+3*3,3*27+5*3,4*27+3*3,0*27+3*3);
LeftShift(1*27+6*3,3*27+2*3,4*27+6*3,0*27+6*3);
break;
default:
break;
}
}
privatevoidChangeMoveByAction(){
//F70B66U85D68R82L76(这个注释恐怕只有我能看懂--!
)
switch(mRenderer.action){
case1:
if((mRenderer.eyex>0)&&(mRenderer.eyez>0)){
mRenderer.move=76;
}
elseif((mRenderer.eyex>0)&&(mRenderer.eyez<0)){
mRenderer.move=70;
}
elseif((mRenderer.eyex<0)&&(mRenderer.eyez<0)){
mRenderer.move=82;
}
elseif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){
mRenderer.move=66;
}
break;
case2:
if((mRenderer.eyex>0)&&(mRenderer.eyez>0)){
mRenderer.move=66;
}
elseif((mRenderer.eyex>0)&&(mRenderer.eyez<0)){
mRenderer.move=76;
}
elseif((mRenderer.eyex<0)&&(mRenderer.eyez<0)){
mRenderer.move=70;
}
elseif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){
mRenderer.move=82;
}
break;
case3:
mRenderer.move=85;
break;
case4:
mRenderer.move=68;
break;
}
}
privatevoidmemcpy(intone,inttwo){
mRenderer.face_color[one]=mRenderer.face_color[two];
mRenderer.face_color[one+1]=mRenderer.face_color[two+1];
mRenderer.face_color[one+2]=mRenderer.face_color[two+2];
}
privatevoidLeftShift(inta,intb,intc,intd){
//a
floattemp1=mRenderer.face_color[a];
floattemp2=mRenderer.face_color[a+1];
floattemp3=mRenderer.face_color[a+2];
memcpy(a,b);
memcpy(b,c);
memcpy(c,d);
mRenderer.face_color[d]=temp1;
mRenderer.face_color[d+1]=temp2;
mRenderer.face_color[d+2]=temp3;
}
}
privatevoidDrawRotation(GL10gl){
//绘制小立方体
switch(move)
{
case70:
DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);
DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);
DrawCube8(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);
DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,0.0f,0.0f,1.0f);
DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);
DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);DrawCube23(gl);
gl.glPopMatrix();
break;
case66:
DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl);
DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);
DrawCube23(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl);
DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl);
gl.glPushMatrix();
gl.glRotatef(angle,0.0f,0.0f,1.0f);
DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl);
DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl);
gl.glPopMatrix();
break;
case85:
DrawCube3(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);
DrawCube4(gl);DrawCube5(gl);DrawCube6(gl);DrawCube7(gl);
DrawCube8(gl);DrawCube12(gl);DrawCube13(gl);DrawCube14(gl);
DrawCube15(gl);DrawCube16(gl);DrawCube20(gl);DrawCube21(gl);DrawCube22(gl);
gl.glPushMatrix();
gl.glRotatef(-angle,0.0f,1.0f,0.0f);
DrawCube0(g