package com.example.planwore;
import javax.microedition.khronos.opengles.GL10;
import org.anddev.andengine.engine.Engine;
import org.anddev.andengine.engine.camera.Camera;
import org.anddev.andengine.engine.camera.hud.controls.BaseOnScreenControl;
import org.anddev.andengine.engine.camera.hud.controls.BaseOnScreenControl.IOnScreenControlListener;
import org.anddev.andengine.engine.camera.hud.controls.DigitalOnScreenControl;
import org.anddev.andengine.engine.handler.IUpdateHandler;
import org.anddev.andengine.engine.options.EngineOptions;
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.anddev.andengine.entity.modifier.MoveModifier;
import org.anddev.andengine.entity.modifier.MoveYModifier;
import org.anddev.andengine.entity.particle.ParticleSystem;
import org.anddev.andengine.entity.particle.emitter.CircleParticleEmitter;
import org.anddev.andengine.entity.particle.initializer.AlphaInitializer;
import org.anddev.andengine.entity.particle.initializer.ColorInitializer;
import org.anddev.andengine.entity.particle.initializer.RotationInitializer;
import org.anddev.andengine.entity.particle.initializer.VelocityInitializer;
import org.anddev.andengine.entity.particle.modifier.ExpireModifier;
import org.anddev.andengine.entity.scene.Scene;
import org.anddev.andengine.entity.sprite.AnimatedSprite;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.entity.text.Text;
import org.anddev.andengine.entity.text.TickerText;
import org.anddev.andengine.entity.util.FPSLogger;
import org.anddev.andengine.input.touch.TouchEvent;
import org.anddev.andengine.opengl.font.Font;
import org.anddev.andengine.opengl.font.FontFactory;
import org.anddev.andengine.opengl.font.StrokeFont;
import org.anddev.andengine.opengl.texture.Texture;
import org.anddev.andengine.opengl.texture.TextureFactory;
import org.anddev.andengine.opengl.texture.TextureOptions;
import org.anddev.andengine.opengl.texture.region.TextureRegion;
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;
import org.anddev.andengine.ui.activity.BaseGameActivity;
import org.anddev.andengine.util.HorizontalAlign;
import org.anddev.andengine.util.modifier.ease.EaseBackInOut;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Handler;
import android.renderscript.Type;
import android.widget.Toast;
public class MainActivity extends BaseGameActivity implements Runnable {
private static final int CAMERA_WIDTH=320;
private static final int CAMERA_HEIGTH=480;
private Camera mCamera;
//Textrue对象
private Texture monscreen,backtextrue;
private Texture mEmitter;
private Texture mtiledTexTure;
//TextureRegion
private TextureRegion mEmitterRegion;
private TextureRegion screenbase,screenknob,backtextrueRegion;
private TiledTextureRegion mTiledTextureRegion;
//字体
private Font mfont;
private StrokeFont mstrokeFont;
//动画
Sprite splash,splash1, spritescreenbase,spritescreenknob;
AnimatedSprite mAnimatedSprite;
Handler mhandler;
//粒子系统
private ParticleSystem particleSystem;
//圆形粒子
private CircleParticleEmitter particleEmitter;
private int count=0;
private int c1,c2;
@Override
public Engine onLoadEngine() {
// TODO Auto-generated method stub=
// mhandler=new Handler();
//初始化Camera以及Engine
this.mCamera=new Camera(0,0,CAMERA_WIDTH,CAMERA_HEIGTH);
return new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGTH), this.mCamera));
}
@Override
public void onLoadResources() {
// TODO Auto-generated method stub
//设置TextureRegionFactory的路径
TextureRegionFactory.setAssetBasePath("flx/");
//初始化Texture
backtextrue=new Texture(512, 1024, TextureOptions.REPEATING_BILINEAR_PREMULTIPLYALPHA);
//=TextureRegion一般有TextureRegionFactory.createFromAsset()或者TextureRegionFactory.createFromResource()
backtextrueRegion=TextureRegionFactory.createFromAsset(backtextrue, this, "background.png",0, 0);
//将Texture加载到engine中
this.mEngine.getTextureManager().loadTexture(backtextrue);
monscreen=new Texture(256, 128, TextureOptions.REPEATING_BILINEAR_PREMULTIPLYALPHA);
screenbase=TextureRegionFactory.createFromAsset(monscreen, this,"onscreen_control_base.png", 0,0);
screenknob=TextureRegionFactory.createFromAsset(monscreen, this,"onscreen_control_knob.png", 128,0);
this.mEngine.getTextureManager().loadTexture(monscreen);
mtiledTexTure=new Texture(512, 256, TextureOptions.REPEATING_BILINEAR_PREMULTIPLYALPHA);
mTiledTextureRegion=TextureRegionFactory.createTiledFromAsset(mtiledTexTure, this, "snapdragon_tiled.png", 0, 0,4,3);
this.mEngine.getTextureManager().loadTexture(mtiledTexTure);
mEmitter=new Texture(32, 32, TextureOptions.REPEATING_BILINEAR_PREMULTIPLYALPHA);
mEmitterRegion=TextureRegionFactory.createFromAsset(mEmitter, this, "particle_fire.png", 0, 0);
this.mEngine.getTextureManager().loadTexture(mEmitter);
}
@Override
public Scene onLoadScene() {
// TODO Auto-generated method stub
this.mEngine.registerUpdateHandler(new FPSLogger());
final Scene scene=new Scene(1);
final int centeX=(CAMERA_WIDTH-this.backtextrueRegion.getWidth())/2;
final int centeY=(CAMERA_HEIGTH-this.backtextrueRegion.getHeight())/2;
splash=new Sprite(centeX, centeY,backtextrueRegion);
splash1=new Sprite(centeX, centeY,backtextrueRegion);
mAnimatedSprite =new AnimatedSprite(0, 0, 100, 60, mTiledTextureRegion);
mAnimatedSprite.animate(80,true);
// mAnimatedSprite.registerEntityModifier(new SequenceEntityModifier(new ParallelEntityModifier(new AlphaModifier(2, 0.4f, 1.0f),new ScaleModifier(2, 0.5f, 1.0f))
// ,new MoveModifier(5, 0, 300, 200, 100, EaseBackInOut.getInstance()) ,new RotationAtModifier(3, 0, 360,240,160) ) );
//加载“游戏手柄”
DigitalOnScreenControl digitalOnScreenControl=new DigitalOnScreenControl(0,CAMERA_HEIGTH-128,mCamera,
screenbase,screenknob,0.1f, new IOnScreenControlListener()
{
@Override
public void onControlChange(BaseOnScreenControl arg0,
float arg1, float arg2) {
//agr1为x坐标,arg2为y坐标。一旦按下,不知道多少,反正大于|0|
if(arg1>0.5)
{
c1=count*20;
if(count++>10)
//粒子是否可见
particleSystem.setParticlesSpawnEnabled(false);
//设置粒子中心
particleEmitter.setCenter(count*20,count);
particleSystem.setParticlesSpawnEnabled(true);
}
if(arg2>0.5)
{
if(count++>10)
particleSystem.setParticlesSpawnEnabled(false);
particleEmitter.setCenter(count,count*30);
particleSystem.setParticlesSpawnEnabled(true);
}
if(arg1<-0.5)
{
if(count--<-5)
particleSystem.setParticlesSpawnEnabled(false);
particleEmitter.setCenter(count*20,count);
particleSystem.setParticlesSpawnEnabled(true);
}
if(arg2<-0.5)
{
if(count--<-5)
particleSystem.setParticlesSpawnEnabled(false);
particleEmitter.setCenter(count,count*30);
particleSystem.setParticlesSpawnEnabled(true);
}
// Toast.makeText(MainActivity.this, arg1+" "+arg2, Toast.LENGTH_SHORT).show();
// TODO Auto-generated method stub
// mAnimatedSprite.setPosition(mAnimatedSprite.getX()+arg1*10,mAnimatedSprite.getY()+arg1*10);
// mAnimatedSprite.registerEntityModifier(new MoveModifier(1, mAnimatedSprite.getX(),mAnimatedSprite.getX()+arg1*10,
// mAnimatedSprite.getY(), mAnimatedSprite.getY()+arg2*10));
}
});
//对游戏手柄的一些设置
digitalOnScreenControl.getControlBase().setBlendFunction(GL10.GL_SRC_ALPHA,GL10.GL_ONE_MINUS_SRC_ALPHA);
digitalOnScreenControl.getControlBase().setAlpha(0.5f);
digitalOnScreenControl.getControlBase().setScaleCenter(0, CAMERA_HEIGTH-128);
digitalOnScreenControl.getControlBase().setScale(1.25f);
digitalOnScreenControl.getControlKnob().setScale(1.25f);
digitalOnScreenControl.refreshControlKnobPosition();
scene.setChildScene(digitalOnScreenControl);
scene.getLastChild().attachChild( splash);
scene.getLastChild().attachChild(mAnimatedSprite);
//对粒子系统的设置
particleEmitter=new CircleParticleEmitter(CAMERA_WIDTH*0.5f, CAMERA_HEIGTH*0.5f, 20);
particleSystem=new ParticleSystem(particleEmitter, 100, 100, 500, mEmitterRegion);
//s设置粒子初始值,颜色,透明度等
particleSystem.addParticleInitializer(new ColorInitializer(1, 0.7f, 0));
particleSystem.addParticleInitializer(new AlphaInitializer(0));
particleSystem.addParticleInitializer(new VelocityInitializer(-2,2, -2, 2));
particleSystem.setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE);
particleSystem.addParticleInitializer(new RotationInitializer(0, 360f));
//加载粒子系统改变方式 因为ScaleModifier与原来的ScaleModifier重复,所以 org.anddev.andengine.entity.particle.modifier.ScaleModifier
particleSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.ScaleModifier(1f,2f, 0, 5));
particleSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.ColorModifier(1, 1, 0, 0.5f, 0, 0, 0, 3));
particleSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.ColorModifier(1, 1, 0.5f, 1f, 0, 1, 2, 4));
particleSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.AlphaModifier(0, 1, 0,1));
particleSystem.addParticleModifier(new org.anddev.andengine.entity.particle.modifier.AlphaModifier(1, 0,3,4));
particleSystem.addParticleModifier(new ExpireModifier(2,4));
particleSystem.setParticlesSpawnEnabled(false);
scene.getLastChild().attachChild(particleSystem);
return scene;
}
@Override
public void onLoadComplete() {
// TODO Auto-generated method stub
}
@Override
public void run() {
// TODO Auto-generated method stub
}
/*
scene.registerUpdateHandler(new IUpdateHandler()//打算设置成滚动屏幕,能滚动,效果不佳,从运行软件到看到屏幕滚动效果需要很长时间
{
@Override
public void onUpdate(float arg0) {
// TODO Auto-generated method stub
splash.registerEntityModifier(new MoveYModifier(50, y1, y1+=5));
if(y1>=400)
y1=0;
splash1.registerEntityModifier(new MoveYModifier(50, y, y+=5));
if(y>=400)
y=0;
}
@Override
public void reset() {
// TODO Auto-generated method stub
splash.registerEntityModifier(new MoveYModifier(50, y1, y1+=5));
if(y1>=400)
y1=0;
splash1.registerEntityModifier(new MoveYModifier(50, y, y+=5));
if(y>=400)
y=0;
}
});
*/
}
感谢PhysicsEditor给的key