/examples/basic/scenes/Scene3.java

http://mt4j.googlecode.com/ · Java · 109 lines · 87 code · 16 blank · 6 comment · 8 complexity · ec3dbdcf6f06ffe39da2ff69520849b4 MD5 · raw file

  1. package basic.scenes;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import org.mt4j.MTApplication;
  5. import org.mt4j.components.TransformSpace;
  6. import org.mt4j.components.visibleComponents.font.FontManager;
  7. import org.mt4j.components.visibleComponents.widgets.MTTextArea;
  8. import org.mt4j.components.visibleComponents.widgets.buttons.MTImageButton;
  9. import org.mt4j.input.inputProcessors.IGestureEventListener;
  10. import org.mt4j.input.inputProcessors.MTGestureEvent;
  11. import org.mt4j.input.inputProcessors.componentProcessors.flickProcessor.FlickEvent;
  12. import org.mt4j.input.inputProcessors.componentProcessors.flickProcessor.FlickProcessor;
  13. import org.mt4j.input.inputProcessors.componentProcessors.tapProcessor.TapEvent;
  14. import org.mt4j.input.inputProcessors.globalProcessors.CursorTracer;
  15. import org.mt4j.sceneManagement.AbstractScene;
  16. import org.mt4j.sceneManagement.transition.FadeTransition;
  17. import org.mt4j.sceneManagement.transition.FlipTransition;
  18. import org.mt4j.util.MT4jSettings;
  19. import org.mt4j.util.MTColor;
  20. import org.mt4j.util.math.Vector3D;
  21. import org.mt4j.util.opengl.GLFBO;
  22. import processing.core.PImage;
  23. public class Scene3 extends AbstractScene {
  24. private MTApplication mtApp;
  25. // private String imagePath = System.getProperty("user.dir") + File.separator + "examples"+ File.separator +"basic"+ File.separator + "scenes" + File.separator + "data" + File.separator;
  26. private String imagePath = "basic" + MTApplication.separator + "scenes" + MTApplication.separator + "data" + MTApplication.separator;
  27. public Scene3(MTApplication mtApplication, String name) {
  28. super(mtApplication, name);
  29. this.mtApp = mtApplication;
  30. //Set the background color
  31. this.setClearColor(new MTColor(150, 188, 146, 255));
  32. this.registerGlobalInputProcessor(new CursorTracer(mtApp, this));
  33. //Create a textfield
  34. MTTextArea textField = new MTTextArea(mtApplication, FontManager.getInstance().createFont(mtApplication, "arial.ttf",
  35. 50, MTColor.WHITE));
  36. textField.setNoFill(true);
  37. textField.setNoStroke(true);
  38. textField.setText("Scene 3");
  39. this.getCanvas().addChild(textField);
  40. textField.setPositionGlobal(new Vector3D(mtApplication.width/2f, mtApplication.height/2f));
  41. //Button to return to the previous scene
  42. PImage arrow = mtApplication.loadImage(imagePath + "arrowRight.png");
  43. MTImageButton previousSceneButton = new MTImageButton(mtApplication, arrow);
  44. previousSceneButton.setNoStroke(true);
  45. if (MT4jSettings.getInstance().isOpenGlMode())
  46. previousSceneButton.setUseDirectGL(true);
  47. previousSceneButton.addActionListener(new ActionListener() {
  48. public void actionPerformed(ActionEvent ae) {
  49. switch (ae.getID()) {
  50. case TapEvent.TAPPED:
  51. mtApp.popScene();
  52. break;
  53. default:
  54. break;
  55. }
  56. }
  57. });
  58. getCanvas().addChild(previousSceneButton);
  59. previousSceneButton.scale(-1, 1, 1, previousSceneButton.getCenterPointLocal(), TransformSpace.LOCAL);
  60. previousSceneButton.setPositionGlobal(new Vector3D(previousSceneButton.getWidthXY(TransformSpace.GLOBAL) + 5, mtApp.height - previousSceneButton.getHeightXY(TransformSpace.GLOBAL) - 5, 0));
  61. //Set a scene transition - Flip transition only available using opengl supporting the FBO extenstion
  62. if (MT4jSettings.getInstance().isOpenGlMode() && GLFBO.isSupported(mtApp))
  63. this.setTransition(new FlipTransition(mtApp, 700));
  64. else{
  65. this.setTransition(new FadeTransition(mtApp));
  66. }
  67. //Register flick gesture with the canvas to change the scene
  68. getCanvas().registerInputProcessor(new FlickProcessor());
  69. getCanvas().addGestureListener(FlickProcessor.class, new IGestureEventListener() {
  70. public boolean processGestureEvent(MTGestureEvent ge) {
  71. FlickEvent e = (FlickEvent)ge;
  72. if (e.getId() == MTGestureEvent.GESTURE_ENDED && e.isFlick()){
  73. switch (e.getDirection()) {
  74. case EAST:
  75. case NORTH_EAST:
  76. case SOUTH_EAST:
  77. mtApp.popScene();
  78. break;
  79. default:
  80. break;
  81. }
  82. }
  83. return false;
  84. }
  85. });
  86. }
  87. public void onEnter() {
  88. System.out.println("Entered scene: " + this.getName());
  89. }
  90. public void onLeave() {
  91. System.out.println("Left scene: " + this.getName());
  92. }
  93. }