A bunch of bubbles

  ... announce your new project or blog about the development of your project.

A bunch of bubbles

Postby Timothy Lee Russell » Wed Aug 25, 2010 9:25 am

I've been doing little experiments with the AndEngine. In this one, I used @Mimminito's particle sprite and put in a bunch of randomness. Touching the screen creates a random particle system with the png. Add them until your phone phreaks out and slows to a crawl...(although I can do about 100 particle systems before the Droid starts choking).

Hitting the home button runs onPause which removes the particle systems. Load the app again to start over. Pointless but fun.

Roshambomb.apk
(1002.56 KiB) Downloaded 300 times


Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
  1. package com.snoffleware.android.roshambomb;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Random;
  5.  
  6. import org.anddev.andengine.engine.Engine;
  7. import org.anddev.andengine.engine.camera.Camera;
  8. import org.anddev.andengine.engine.options.EngineOptions;
  9. import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation;
  10. import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
  11. import org.anddev.andengine.entity.particle.ParticleSystem;
  12. import org.anddev.andengine.entity.particle.modifier.AccelerationInitializer;
  13. import org.anddev.andengine.entity.particle.modifier.AlphaModifier;
  14. import org.anddev.andengine.entity.particle.modifier.ColorInitializer;
  15. import org.anddev.andengine.entity.particle.modifier.ColorModifier;
  16. import org.anddev.andengine.entity.particle.modifier.ExpireModifier;
  17. import org.anddev.andengine.entity.particle.modifier.ScaleModifier;
  18. import org.anddev.andengine.entity.particle.modifier.VelocityInitializer;
  19. import org.anddev.andengine.entity.scene.Scene;
  20. import org.anddev.andengine.entity.scene.Scene.IOnSceneTouchListener;
  21. import org.anddev.andengine.entity.scene.background.ColorBackground;
  22. import org.anddev.andengine.entity.util.FPSLogger;
  23. import org.anddev.andengine.input.touch.TouchEvent;
  24. import org.anddev.andengine.opengl.texture.Texture;
  25. import org.anddev.andengine.opengl.texture.TextureOptions;
  26. import org.anddev.andengine.opengl.texture.region.TextureRegion;
  27. import org.anddev.andengine.opengl.texture.region.TextureRegionFactory;
  28. import org.anddev.andengine.ui.activity.BaseGameActivity;
  29.  
  30. import android.view.MotionEvent;
  31.  
  32. public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener {
  33.  
  34.         private static final int CAMERA_WIDTH = 720;
  35.         private static final int CAMERA_HEIGHT = 480;
  36.  
  37.         private Camera mCamera;
  38.         private Texture mTexture;
  39.         private TextureRegion mFaceTextureRegion;
  40.         private ParticleSystem mParticleSystem;
  41.         private Scene scene;
  42.         private Random r = new Random();
  43.         private ArrayList<ParticleSystem> particleSystems = new ArrayList<ParticleSystem>();
  44.  
  45.         @Override
  46.         public void onPause() {
  47.                 super.onPause();
  48.                
  49.                 this.runOnUpdateThread(new Runnable() {
  50.                         @Override
  51.                         public void run() {
  52.                                 for(ParticleSystem p : particleSystems)
  53.                                 {                                      
  54.                                         scene.getTopLayer().removeEntity(p);
  55.                                 }
  56.                         }
  57.                 });
  58.         }
  59.        
  60.         @Override
  61.         public Engine onLoadEngine() {
  62.                 this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
  63.                 return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));         
  64.         }
  65.  
  66.         @Override
  67.         public void onLoadResources() {
  68.                 this.mTexture = new Texture(32, 32, TextureOptions.BILINEAR);
  69.                 this.mFaceTextureRegion = TextureRegionFactory.createFromAsset(this.mTexture, this, "gfx/shockwave_32.png", 0, 0);
  70.                 this.mEngine.getTextureManager().loadTexture(this.mTexture);
  71.         }
  72.  
  73.         @Override
  74.         public Scene onLoadScene() {
  75.                 this.mEngine.registerUpdateHandler(new FPSLogger());
  76.  
  77.                 scene = new Scene(1);
  78.                 scene.setBackground(new ColorBackground(0.0f, 0.0f, 0.0f));
  79.                 scene.setOnSceneTouchListener(this);
  80.  
  81.                 return scene;
  82.         }
  83.        
  84.         @Override
  85.         public boolean onSceneTouchEvent(final Scene pScene, final TouchEvent pSceneTouchEvent) {
  86.                 this.runOnUpdateThread(new Runnable() {
  87.                         @Override
  88.                         public void run() {
  89.                                 mParticleSystem = new ParticleSystem(pSceneTouchEvent.getX(), pSceneTouchEvent.getY(), 0, 0, 5, 10, 10, MainActivity.this.mFaceTextureRegion);
  90.                                
  91.                                 //Particles
  92.                                 int minX = r.nextInt() % 100;
  93.                                 int maxX = r.nextInt() % 100;
  94.                                 int minY = r.nextInt() % 100;
  95.                                 int maxY = r.nextInt() % 100;
  96.                                
  97.                                 mParticleSystem.addParticleInitializer(new VelocityInitializer(
  98.                                                 (float)minX, (float)maxX, (float)minY, (float)maxY));
  99.                                
  100.                                 //Acceleration
  101.                                 int accelerationX = r.nextInt() % 5;
  102.                                 int accelerationY = r.nextInt() % 5;
  103.                                
  104.                                 mParticleSystem.addParticleInitializer(new AccelerationInitializer(
  105.                                                 (float)accelerationX, (float)accelerationY));
  106.                                
  107.                                 //Scale
  108.                                 double fromScale = r.nextDouble();                             
  109.                                 double toScale = r.nextDouble() * 10;                          
  110.                                 int fromTime = 0;
  111.                                 int toTime = r.nextInt(15);
  112.                                
  113.                                 mParticleSystem.addParticleModifier(new ScaleModifier(
  114.                                                 (float)fromScale, (float)toScale, (float)fromTime, (float)toTime));
  115.                                
  116.                                 //Alpha channel
  117.                                 double fromAlphaTime = r.nextDouble() * 3;                             
  118.                                 double toAlphaTime = r.nextDouble() * 10;              
  119.                                
  120.                                 mParticleSystem.addParticleModifier(new AlphaModifier(
  121.                                                 1.0f, 0.0f, (float)fromAlphaTime, (float)toAlphaTime));
  122.                                
  123.                                 //Expiration
  124.                                 int minLife = r.nextInt(10);
  125.                                 int maxLife = r.nextInt(20);
  126.                                
  127.                                 mParticleSystem.addParticleModifier(new ExpireModifier(minLife, maxLife));
  128.                                
  129.                                 //Color
  130.                                 double fromRed = r.nextDouble();
  131.                                 double toRed = r.nextDouble();
  132.                                 double fromGreen = r.nextDouble();
  133.                                 double toGreen = r.nextDouble();
  134.                                 double fromBlue = r.nextDouble();
  135.                                 double toBlue = r.nextDouble();
  136.                                 double fromColorTime = r.nextInt(5);
  137.                                 double toColorTime = r.nextInt(20);
  138.                                
  139.                                 mParticleSystem.addParticleModifier(new ColorModifier(
  140.                                                 (float)fromRed, (float)toRed, (float)fromGreen, (float)toGreen,
  141.                                                 (float)fromBlue, (float)toBlue, (float)fromColorTime, (float)toColorTime));
  142.                                
  143.                                 scene.getTopLayer().addEntity(mParticleSystem);
  144.                                
  145.                                 particleSystems.add(mParticleSystem);
  146.                         }
  147.                 });            
  148.                 return false;          
  149.         }
  150.  
  151.         @Override
  152.         public void onLoadComplete() {
  153.  
  154.         }
  155. }
  156.  
Parsed in 0.021 seconds, using GeSHi 1.0.8.4
Timothy Lee Russell
 
Posts: 7
Joined: Mon Aug 09, 2010 6:18 am

Re: A bunch of bubbles

Postby Timothy Lee Russell » Tue Aug 31, 2010 8:45 am

So, I modified my experiment to be a Live Wallpaper -- which is available in the marketplace for free. You can scan the QR code here: http://snoffleware.com/Pages/BubblesLiveWallpaper.aspx

Also, I thought it might be useful for others to see a full wallpaper project so I have attached the Eclipse project.

Of course, I'm learning as well so constructive comments would be great.

BubblesLiveWallpaper.zip
(561.59 KiB) Downloaded 475 times
Timothy Lee Russell
 
Posts: 7
Joined: Mon Aug 09, 2010 6:18 am


Return to Projects & Project-Development Blogs

Who is online

Users browsing this forum: No registered users and 6 guests