Flash-peliohjelmointi tutorial 4

 

Tutorial 4

 

Ohjeistusta maze pelin tehtävien ratkaisuja:

  1. tehtävä 21 ratkaisu: lisätään seuraavanlaiset koodit Sokkelo_taso1 luokkaan
        if (player.hitTestObject(doorKey2))
    			{
    				player.hasKey2 = true;
    				trace("avain pelaajalla");
    				player.addChild(doorKey2);
    				doorKey2.x = 10;
    				doorKey2.y = 0;
    				doorKey2.rotation = 300;
    			}
    
    			if (player.hitTestObject(doorTwo))
    			{
    				if (player.hasKey2)
    				{
    					if (! doorTwo.isOpen)
    					{
    						doorTwo.isOpen = true;
    						doorKey2.visible = false;
    						player.hasKey2 = false;
    					}
    				}
    				else
    				{
    					Collision.block(player, doorTwo);
    				}
    			}
        

    Player luokkaan lisätään: hasKey koodien jälkeen duplikaattikoodia:

        private var _hasKey2:Boolean;
        


        _hasKey2 = false;
        


        		public function get hasKey2():Boolean
    		{
    			return _hasKey2;
    		}
    		public function set hasKey2(keyState:Boolean)
    		{
    			_hasKey2 = keyState;
    		}
            
  2. ratkaisuyritystä kohtaan 22 hahmon tilat : kun //parent.removeChild(this); piilotetaan jää peli pyörimään taustalle ja ehtolause if (health.meter.width < 1) ja se on loputtomasti totta, jolloin peli tuuppaa gameover movieclippiä loputtomiin: tämä blokataan seuraavalla tavalla:testataan myös onko gameover tapahtunut
    lisää lihavoitu luokan alkuun


        public class Sokkelo_taso1b extends MovieClip
    	{
    
    		var gameover:Boolean = false;
        

    lisäyksiä gameover tilan testaukseen

    if (health.meter.width < 1 && !gameover)
    			{
    				var gameOverLost:GameOver = new GameOver();
    				gameOverLost.messageDisplay.text = "Game Over" + "\n" + "You Lost!";
    				parent.addChild(gameOverLost);
    				player.gotoAndStop("hahmokaatui");
    				gameover = true;
     				 pysaytaPeli();
    				 player.pysaytaHahmo();
    				//parent.removeChild(this);
    			}
        

    lisätään Sokkelo_taso1 luokkaan uusi metodi

        function pysaytaPeli():void {
    	removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    

    lisätään Player luokkaan

    		public function pysaytaHahmo ():void {
    			removeEventListener(Event.ENTER_FRAME, onEnterFrame);
    }
    

    hahmo voittotila koodi

    if (player.hitTestPoint(exit.x,exit.y,true)  && ! gameover)
    			{
    				var gameOverWon:GameOver = new GameOver();
    				gameOverWon.messageDisplay.text = "Game Over" + "\n" + "You Won!";
    				parent.addChild(gameOverWon);
    
    				player.gotoAndStop("voitto");
    				gameover = true;
    				pysaytaPeli();
    				player.pysaytaHahmo();
    				player.stop();
    				removeChild(exit);
    				//parent.removeChild(this);
    			}