国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java實現菜單滑動效果

2019-11-26 15:14:16
字體:
來源:轉載
供稿:網友

菜單滑動效果的實現

public class MenuScrollerActivity extends BaseGameActivity implements IScrollDetectorListener, IOnSceneTouchListener, IClickDetectorListener {        // ===========================================================    // Constants    // ===========================================================    protected static int CAMERA_WIDTH = 480;    protected static int CAMERA_HEIGHT = 320;     protected static int FONT_SIZE = 24;    protected static int PADDING = 50;         protected static int MENUITEMS = 7;          // ===========================================================    // Fields    // ===========================================================    private Scene mScene;    private Camera mCamera;     private Font mFont;     private BitmapTextureAtlas mFontTexture;            private BitmapTextureAtlas mMenuTextureAtlas;        private TextureRegion mMenuLeftTextureRegion;    private TextureRegion mMenuRightTextureRegion;         private Sprite menuleft;    private Sprite menuright;     // Scrolling    private SurfaceScrollDetector mScrollDetector;    private ClickDetector mClickDetector;     private float mMinX = 0;    private float mMaxX = 0;    private float mCurrentX = 0;    private int iItemClicked = -1;         private Rectangle scrollBar;        private List<TextureRegion> columns = new ArrayList<TextureRegion>();     // ===========================================================    // Constructors    // ===========================================================     // ===========================================================    // Getter & Setter    // ===========================================================     // ===========================================================    // Methods for/from SuperClass/Interfaces    // ===========================================================     @Override    public void onLoadResources() {        // Paths        FontFactory.setAssetBasePath("font/");        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");         // Font        this.mFontTexture = new BitmapTextureAtlas(256, 256);        this.mFont = FontFactory.createFromAsset(this.mFontTexture, this, "Plok.TTF", FONT_SIZE, true, Color.BLACK);        this.mEngine.getTextureManager().loadTextures(this.mFontTexture);        this.mEngine.getFontManager().loadFonts(this.mFont);                 //Images for the menu        for (int i = 0; i < MENUITEMS; i++) {                  BitmapTextureAtlas mMenuBitmapTextureAtlas = new BitmapTextureAtlas(256,256, TextureOptions.BILINEAR_PREMULTIPLYALPHA);          TextureRegion mMenuTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mMenuBitmapTextureAtlas, this, "menu"+i+".png", 0, 0);                     this.mEngine.getTextureManager().loadTexture(mMenuBitmapTextureAtlas);          columns.add(mMenuTextureRegion);                              }        //Textures for menu arrows        this.mMenuTextureAtlas = new BitmapTextureAtlas(128,128, TextureOptions.BILINEAR_PREMULTIPLYALPHA);        this.mMenuLeftTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mMenuTextureAtlas, this, "menu_left.png", 0, 0);        this.mMenuRightTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(mMenuTextureAtlas, this, "menu_right.png",64, 0);        this.mEngine.getTextureManager().loadTexture(mMenuTextureAtlas);          }     @Override    public Engine onLoadEngine() {        this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);         final EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE, new FillResolutionPolicy(), this.mCamera);        engineOptions.getTouchOptions().setRunOnUpdateThread(true);         final Engine engine = new Engine(engineOptions);        return engine;    }     @Override    public Scene onLoadScene() {        this.mEngine.registerUpdateHandler(new FPSLogger());         this.mScene = new Scene();        this.mScene.setBackground(new ColorBackground(0, 0, 0));                this.mScrollDetector = new SurfaceScrollDetector(this);        this.mClickDetector = new ClickDetector(this);         this.mScene.setOnSceneTouchListener(this);        this.mScene.setTouchAreaBindingEnabled(true);        this.mScene.setOnSceneTouchListenerBindingEnabled(true);         CreateMenuBoxes();         return this.mScene;     }     @Override    public boolean onSceneTouchEvent(final Scene pScene, final TouchEvent pSceneTouchEvent) {        this.mClickDetector.onTouchEvent(pSceneTouchEvent);        this.mScrollDetector.onTouchEvent(pSceneTouchEvent);        return true;    }     @Override    public void onScroll(final ScrollDetector pScollDetector, final TouchEvent pTouchEvent, final float pDistanceX, final float pDistanceY) {         //Disable the menu arrows left and right (15px padding)        if(mCamera.getMinX()<=15)           menuleft.setVisible(false);         else           menuleft.setVisible(true);                  if(mCamera.getMinX()>mMaxX-15)           menuright.setVisible(false);         else           menuright.setVisible(true);                   //Return if ends are reached        if ( ((mCurrentX - pDistanceX) < mMinX) ){                    return;        }else if((mCurrentX - pDistanceX) > mMaxX){                     return;        }                 //Center camera to the current point        this.mCamera.offsetCenter(-pDistanceX,0 );        mCurrentX -= pDistanceX;                           //Set the scrollbar with the camera        float tempX =mCamera.getCenterX()-CAMERA_WIDTH/2;        // add the % part to the position        tempX+= (tempX/(mMaxX+CAMERA_WIDTH))*CAMERA_WIDTH;           //set the position        scrollBar.setPosition(tempX, scrollBar.getY());                 //set the arrows for left and right        menuright.setPosition(mCamera.getCenterX()+CAMERA_WIDTH/2-menuright.getWidth(),menuright.getY());        menuleft.setPosition(mCamera.getCenterX()-CAMERA_WIDTH/2,menuleft.getY());                                  //Because Camera can have negativ X values, so set to 0        if(this.mCamera.getMinX()<0){          this.mCamera.offsetCenter(0,0 );          mCurrentX=0;        }              }     @Override    public void onClick(ClickDetector pClickDetector, TouchEvent pTouchEvent) {        loadLevel(iItemClicked);    };     // ===========================================================    // Methods    // ===========================================================         private void CreateMenuBoxes() {              int spriteX = PADDING;       int spriteY = PADDING;              //current item counter       int iItem = 1;        for (int x = 0; x < columns.size(); x++) {                  //On Touch, save the clicked item in case it's a click and not a scroll.         final int itemToLoad = iItem;                  Sprite sprite = new Sprite(spriteX,spriteY,columns.get(x)){                      public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {             iItemClicked = itemToLoad;             return false;           }                    };                  iItem++;                           this.mScene.attachChild(sprite);                  this.mScene.registerTouchArea(sprite);                    spriteX += 20 + PADDING+sprite.getWidth();      }              mMaxX = spriteX - CAMERA_WIDTH;              //set the size of the scrollbar       float scrollbarsize = CAMERA_WIDTH/((mMaxX+CAMERA_WIDTH)/CAMERA_WIDTH);       scrollBar = new Rectangle(0,CAMERA_HEIGHT-20,scrollbarsize, 20);       scrollBar.setColor(1,0,0);       this.mScene.attachChild(scrollBar);              menuleft = new Sprite(0,CAMERA_HEIGHT/2-mMenuLeftTextureRegion.getHeight()/2,mMenuLeftTextureRegion);       menuright = new Sprite(CAMERA_WIDTH-mMenuRightTextureRegion.getWidth(),CAMERA_HEIGHT/2-mMenuRightTextureRegion.getHeight()/2,mMenuRightTextureRegion);       this.mScene.attachChild(menuright);       menuleft.setVisible(false);       this.mScene.attachChild(menuleft);    }               @Override    public void onLoadComplete() {     }     //Here is where you call the item load.    private void loadLevel(final int iLevel) {        if (iLevel != -1) {            runOnUiThread(new Runnable() {                @Override                public void run() {                                           Toast.makeText(MenuScrollerActivity.this, "Load Item" + String.valueOf(iLevel), Toast.LENGTH_SHORT).show();                    iItemClicked = -1;                }            });        }    }}

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通许县| 云霄县| 扶风县| 岳阳市| 吉首市| 辽源市| 柳林县| 达尔| 邵阳市| 蛟河市| 贵港市| 沙河市| 靖宇县| 南陵县| 塔城市| 平南县| 大理市| 镇巴县| 瑞金市| 集安市| 绿春县| 新晃| 惠州市| 莱西市| 军事| 武冈市| 汉阴县| 南京市| 文昌市| 静海县| 邹平县| 寿宁县| 淳化县| 古浪县| 武川县| 甘德县| 成武县| 玛纳斯县| 轮台县| 伊春市| 自治县|