/// <summary> /// ��Ϸ���������˵� /// </summary> private void ShowGameOverMenu() { if (gameOverLayer == null) { gameOverLayer = new CCLayer(); } // gameOver����ͼƬ CCSprite gameOverImageSprite = CCSprite.spriteWithFile("imgs/start/gameOver"); gameOverImageSprite.position = new CCPoint(AppDelegate.screenSize.width / 2, AppDelegate.screenSize.height * 4 / 5); gameOverLayer.addChild(gameOverImageSprite); // �÷�PanelͼƬ CCSprite scorePanel = CCSprite.spriteWithFile("imgs/start/scorePanel"); scorePanel.position = new CCPoint(AppDelegate.screenSize.width / 2, AppDelegate.screenSize.height * 3 / 5); gameOverLayer.addChild(scorePanel); // �÷� CCLayer currentScoreLayer = new CCLayer(); List<CCSprite> digitSpriteList = new List<CCSprite>(); currentScoreLayer.scale = 0.5f; currentScoreLayer.position = new CCPoint(AppDelegate.screenSize.width / 2 + 60, AppDelegate.screenSize.height * 3 / 5 + 15); this.addChild(currentScoreLayer); UpdateScore(digitSpriteList, currentScoreLayer, score, false); gameOverLayer.addChild(currentScoreLayer); // ��߷� using (IsolatedStorageFileStream stream = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("/score.data", System.IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)) { StreamReader reader = new StreamReader(stream); string res = reader.ReadToEnd(); if (!string.IsNullOrEmpty(res)) { highestScore = Convert.ToInt32(res); } if (!IsolatedStorageFile.GetUserStoreForApplication().FileExists("score.data")) { IsolatedStorageFile.GetUserStoreForApplication().CreateFile("score.data"); } } using (IsolatedStorageFileStream stream = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("/score.data", System.IO.FileMode.OpenOrCreate, FileAccess.ReadWrite)) { if (score > highestScore) { highestScore = score; byte[] buffer = UTF8Encoding.UTF8.GetBytes(highestScore.ToString()); stream.Write(buffer, 0, buffer.Length); stream.Flush(); stream.Close(); stream.Dispose(); CCSprite newHighScore = CCSprite.spriteWithFile("imgs/start/new"); newHighScore.position = new CCPoint(AppDelegate.screenSize.width / 2 + 35, AppDelegate.screenSize.height * 3 / 5 - 8); gameOverLayer.addChild(newHighScore); } } CCLayer highestScoreLayer = new CCLayer(); List<CCSprite> highestScoreDigitSpriteList = new List<CCSprite>(); highestScoreLayer.scale = 0.5f; highestScoreLayer.position = new CCPoint(AppDelegate.screenSize.width / 2 + 60, AppDelegate.screenSize.height * 3 / 5 - 30); this.addChild(highestScoreLayer); UpdateScore(highestScoreDigitSpriteList, highestScoreLayer, highestScore, false); gameOverLayer.addChild(highestScoreLayer); #region ��ť // ��ʼ��ť CCSprite btnStart = CCSprite.spriteWithFile("imgs/start/btn_start"); CCSprite btn_startSelected = CCSprite.spriteWithFile("imgs/start/btn_startSelected"); CCMenuItemSprite menuItemSprite1 = CCMenuItemSprite.itemFromNormalSprite(btnStart, btn_startSelected, this, (sender) => { GameScene gameScene = new GameScene(game); // ��ת����һ������ var scene = CCTransitionFade.transitionWithDuration(0.5f, gameScene); CCDirector.sharedDirector().pushScene(scene); }); // ���а� CCSprite btnHighScore = CCSprite.spriteWithFile("imgs/start/btn_highScore"); CCSprite btnHighScoreSelected = CCSprite.spriteWithFile("imgs/start/btn_highScoreSelected"); CCMenuItemSprite menuItemSprite2 = CCMenuItemSprite.itemFromNormalSprite(btnHighScore, btnHighScoreSelected, this, (sender) => { game.Exit(); }); CCMenu menu = CCMenu.menuWithItems(menuItemSprite1, menuItemSprite2); menu.position = new CCPoint(AppDelegate.screenSize.width / 2, ground.contentSize.height + btnStart.contentSize.height / 2); //�˵�ˮƽ���� menu.alignItemsHorizontallyWithPadding(20); this.addChild(menu); #endregion this.addChild(gameOverLayer); }
private void InitBackGround() { #region 地面 CCSprite ground = CCSprite.spriteWithFile("imgs/ground/ground"); ground.position = new CCPoint(AppDelegate.screenSize.width / 2, ground.contentSize.height / 2); this.addChild(ground); #endregion #region 天空 CCSprite sky = CCSprite.spriteWithFile("imgs/back/back"); sky.anchorPoint = new CCPoint(0, 1); sky.position = new CCPoint(0, AppDelegate.screenSize.height); this.addChild(sky); #endregion #region FlappyBird图片文本 CCSprite flappyBirdTxt = CCSprite.spriteWithFile("imgs/start/fb_label"); flappyBirdTxt.position = new CCPoint(AppDelegate.screenSize.width / 2, (2 / 3f) * AppDelegate.screenSize.height); this.addChild(flappyBirdTxt); #endregion #region FlappyBird CCSprite bird = CCSprite.spriteWithFile("imgs/bird/bird_01"); bird.position = new CCPoint(AppDelegate.screenSize.width / 2, AppDelegate.screenSize.height / 2); // bird飞行动作帧集合 List<CCSpriteFrame> frames = new List<CCSpriteFrame>(); for (int i = 1; i < 3; i++) { // 帧贴图 CCTexture2D texture = CCTextureCache.sharedTextureCache().addImage("imgs/bird/bird_0" + i); // 这里存在一个引擎的bug,如果不设置的话,就会播放不出来动画 texture.Name = (uint)i; var frame = CCSpriteFrame.frameWithTexture(texture, new CCRect(0, 0, texture.ContentSizeInPixels.width, texture.ContentSizeInPixels.height)); frames.Add(frame); } // 飞行动画 CCAnimation marmotShowanimation = CCAnimation.animationWithFrames(frames, 0.1f); CCAnimate flyAction = CCAnimate.actionWithAnimation(marmotShowanimation, false); CCRepeatForever repeatAction = CCRepeatForever.actionWithAction(flyAction); bird.runAction(repeatAction); this.addChild(bird); #endregion #region 按钮 // 开始按钮 CCSprite btnStart = CCSprite.spriteWithFile("imgs/start/btn_start"); CCSprite btn_startSelected = CCSprite.spriteWithFile("imgs/start/btn_startSelected"); CCMenuItemSprite menuItemSprite1 = CCMenuItemSprite.itemFromNormalSprite(btnStart, btn_startSelected, this, (sender) => { if (isLoaded) { GameScene gameScene = new GameScene(game); // 跳转到下一个场景 var scene = CCTransitionFade.transitionWithDuration(0.5f, gameScene); CCDirector.sharedDirector().pushScene(scene); } }); // 排行榜 CCSprite btnHighScore = CCSprite.spriteWithFile("imgs/start/btn_highScore"); CCSprite btnHighScoreSelected = CCSprite.spriteWithFile("imgs/start/btn_highScoreSelected"); CCMenuItemSprite menuItemSprite2 = CCMenuItemSprite.itemFromNormalSprite(btnHighScore, btnHighScoreSelected, this, (sender) => { game.Exit(); }); CCMenu menu = CCMenu.menuWithItems(menuItemSprite1, menuItemSprite2); menu.position = new CCPoint(AppDelegate.screenSize.width / 2, ground.contentSize.height + btnStart.contentSize.height / 2); //菜单水平排列 menu.alignItemsHorizontallyWithPadding(48); this.addChild(menu); #endregion }