andengine-2:andengine实现一个简单例子, 小球随手指移动

来源:互联网 发布:mac文件共享给windows 编辑:程序博客网 时间:2024/04/28 07:10

这博客是为了激励我自己学习使用, 自己学习过程中随便写写, 水平极其菜鸟, 因此稍微懂点的就可以右上角了大笑

看了2个andengine中的小例子, 试着实现小球随手指移动的功能, 基本功能是实现了,至于代码写的如何, 这样实现有木有问题, 就不是我现在所操心的事情了, 现在处于依葫芦画瓢的阶段,因此可能代码的使用漏洞百出, 如果有人指出来, 不胜感激。

好, 下面上代码 上图:

package y.j.d.dragsprite;import org.andengine.engine.camera.Camera;import org.andengine.engine.options.EngineOptions;import org.andengine.engine.options.ScreenOrientation;import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;import org.andengine.entity.modifier.PathModifier;import org.andengine.entity.modifier.PathModifier.Path;import org.andengine.entity.scene.IOnSceneTouchListener;import org.andengine.entity.scene.Scene;import org.andengine.entity.scene.background.Background;import org.andengine.entity.sprite.Sprite;import org.andengine.entity.util.FPSLogger;import org.andengine.input.touch.TouchEvent;import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;import org.andengine.opengl.texture.region.ITextureRegion;import org.andengine.ui.activity.SimpleBaseGameActivity;import org.andengine.util.color.Color;import android.util.Log;public class MainActivity extends SimpleBaseGameActivity {private int width = 720;private int height = 480;private BitmapTextureAtlas texture;private ITextureRegion smile;@Overridepublic EngineOptions onCreateEngineOptions() {Camera  camera = new Camera(0, 0, width, height);return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(width, height), camera);}@Overrideprotected void onCreateResources() {BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");texture = new BitmapTextureAtlas(getTextureManager(), 64, 64);smile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(texture, getAssets(), "smi.png", 0, 0);texture.load();}@Overrideprotected Scene onCreateScene() {getEngine().registerUpdateHandler(new FPSLogger());Scene scene = new Scene();scene.setBackground(new Background(Color.BLUE));final Sprite sprite = new Sprite((width-smile.getWidth())/2, (height-smile.getHeight())/2, smile, getVertexBufferObjectManager()){@Overridepublic boolean onAreaTouched(TouchEvent pSceneTouchEvent,float pTouchAreaLocalX, float pTouchAreaLocalY) {Log.e("aaaaaaa", "ccccccccc");switch (pSceneTouchEvent.getAction()) {case TouchEvent.ACTION_DOWN:this.setScale(2.0f);break;case TouchEvent.ACTION_MOVE:this.setPosition(pSceneTouchEvent.getX()-this.getWidth()/2, pSceneTouchEvent.getY()-this.getHeight()/2);break;default:this.setScale(1.0f);break;}return true;}};scene.setOnSceneTouchListener(new IOnSceneTouchListener() {@Overridepublic boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {Log.e("aaaaaaa", "bbbbbbbbbb");sprite.clearEntityModifiers();if(pSceneTouchEvent.isActionUp()){Path path = new Path(new float[]{sprite.getX(), pSceneTouchEvent.getX()-sprite.getWidth()/2}, new float[]{sprite.getY(), pSceneTouchEvent.getY()-sprite.getHeight()/2});sprite.registerEntityModifier(new PathModifier(2, path));}return true;}});scene.attachChild(sprite);scene.registerTouchArea(sprite);scene.setTouchAreaBindingOnActionDownEnabled(true);scene.setTouchAreaBindingOnActionMoveEnabled(true);return scene;}}


效果图:

基本功能搞定, 效果是小球可以拖动, 或者手指点到小球外, 那么小球就会向手指移动。

不知道为什么 eclipse 老是和设备失去连接, 为了证明logcat还起作用, 只好在和屏幕互动的时候加些log。 唉 不知道怎么解决啊。