`
modabobo
  • 浏览: 511163 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

看了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;
	
	@Override
	public EngineOptions onCreateEngineOptions() {
		Camera  camera = new Camera(0, 0, width, height);
		return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(width, height), camera);
	}

	@Override
	protected void onCreateResources() {
		BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
		texture = new BitmapTextureAtlas(getTextureManager(), 64, 64);
		smile = BitmapTextureAtlasTextureRegionFactory.createFromAsset(texture, getAssets(), "smi.png", 0, 0);
		texture.load();
	}

	@Override
	protected 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()){
			@Override
			public 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() {
			
			@Override
			public 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。 唉 不知道怎么解决啊。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics