Flash-peliohjelmointi tutorial 4c

 

Tutorial 4c

 

Lisää ominaisuuksia maze pelin rakenteluun jatkuu edellisestä 04b :

 

toinen taso

  1. starttinappulan ohjaus siirretään SokkeloMain luokkaan (FLA tiedoston luokka: kirjoita SokkeloMain FLA tiedoston luokkakenttään) , ekan tason movieclip:in instanssin nimi taso1
    package 
    {
    
    	import flash.display.MovieClip;
    	import flash.events.MouseEvent;
    
    	public class SokkeloMain extends MovieClip
    	{
    
    		var pelinaloitusnappi:PelinAloitusNappi;
    
    		public function SokkeloMain()
    		{
    			// constructor code
    
    			init();
    		}
    		function init():void
    		{
    
    			pelinaloitusnappi = new PelinAloitusNappi();
    			addChild(pelinaloitusnappi);
    			pelinaloitusnappi.x = 200;
    			pelinaloitusnappi.y = 200;
    			pelinaloitusnappi.addEventListener(MouseEvent.CLICK, aloitusNappiaPainettu);
    		}
    
    		function aloitusNappiaPainettu(event:MouseEvent):void
    		{
    			removeChild(pelinaloitusnappi);
    
    			taso1.aloitaPeli();
    		}
    	}
    }
    
  2. kun peli voitetaan eli gameover won tilassa: taso 1 poistetaan stagelta ja taso 2 tuodaan stagelle
    1. kopioi tason 2 fla tiedostosta kirjastosta tarvittavat movieclipit (huom! uudelleen nimeä jos tulee samanimi konflikteja)
    2. kun kopioitaessa tulee Ikkuna: Resolve Library Conflict: valitse viimeinen: Put duplicate items...
    3. 2 tason luokkanimi pitää vaihtaa
  3. SokkeloMain luokkaan lisätään lihavoidut:
        package 
    {
    
    	import flash.display.MovieClip;
    	import flash.events.MouseEvent;
    
    	public class SokkeloMain extends MovieClip
    	{
    
    		var pelinaloitusnappi:PelinAloitusNappi;
    		var sokkelo_taso2:Sokkelo_taso2;
    
    		public function SokkeloMain()
    		{
    			// constructor code
    
    			init();
    		}
    		function init():void
    		{
    			sokkelo_taso2 = new Sokkelo_taso2();
    			pelinaloitusnappi = new PelinAloitusNappi();
    			addChild(pelinaloitusnappi);
    			pelinaloitusnappi.x = 200;
    			pelinaloitusnappi.y = 200;
    			pelinaloitusnappi.addEventListener(MouseEvent.CLICK, aloitusNappiaPainettu);
    			taso1.subscribe(this);
    		}
    
    		function aloitusNappiaPainettu(event:MouseEvent):void
    		{
    			removeChild(pelinaloitusnappi);
    
    			taso1.aloitaPeli();
    		}
    		public function lataaToinenTaso():void
    		{
    			trace("jee");
    			
    			 removeChild(taso1);
    			addChild(sokkelo_taso2);
    			sokkelo_taso2.aloitaPeli()
    		}
    
    
    	}
    }
        
  4. Sokkelo_taso1 luokkaa editoidaan:
    1. lisää muuttujan esittely luokan alkuun:
              
              	public class Sokkelo_taso1 extends MovieClip
      	{
      		var saalisSaldonLukum:int = 0;
      		var mainController:Object;
              
    2. gamover ehtolause:
              if (player.hitTestPoint(exit.x,exit.y,true))
      			{
      				var gameOverWon:GameOver=new GameOver();
      				gameOverWon.messageDisplay.text = "You Won!";
      				//parent.addChild(gameOverWon);
      
      				mainController.lataaToinenTaso();
      			}

      lisätään uusi metodi Sokkelo_taso1 luokkaan,jota SokkeloMain luokasta kutsutaan

                  
      		function subscribe(mainController:Object):void
      		{
      			this.mainController = mainController;
      		}
  5. Sokkelo_taso2 luokassa tarkistus että aloitusnappi koodit on poistettu tai piilossa

        //var pelinaloitusnappi:PelinAloitusNappi;
        
        /*pelinaloitusnappi = new PelinAloitusNappi();
    			addChild(pelinaloitusnappi);
    			pelinaloitusnappi.x = 500;
    			pelinaloitusnappi.y = 500;
    			pelinaloitusnappi.addEventListener(MouseEvent.CLICK, aloitusNappiaPainettu);*/
                
                
                /*		function aloitusNappiaPainettu(event:MouseEvent):void
    		{
    			removeChild(pelinaloitusnappi);
    			stage.focus = this;
    			focusRect = false;
    
    			aloitaPeli();
    		}*/
        
  6. siirrä rivit:
    	stage.focus = this;
    	focusRect = false;
                
    aloitaPeli() metodiin
  7. muutetaan kopioidut duplikaatti movieclipit,käyttämään uusia luokkia esim tason 2 luokkaa Wall2
  8. luodaan Wall2 ja luokka: (perii Wall luokasta)
        
    package 
    {
            public class Wall2 extends Wall
            {
            }
    }
        
  9. jatketaan samalla pelihahmolla 2 tasossa: vaihda pelihahmo mc
  10. playpausenappi:
    1. luo movieclip: jossa kaksi tasoa:
      1. dynaaminen tekstikenttä
      2. tausta
    2. luokkanimi (export for as: PlayPauseNappiMc)
    3. luokan PlayPauseNappiMc koodi:
              
              
      package 
      {
      	import flash.display.MovieClip;
      	import flash.events.MouseEvent;
      
      	public class PlayPauseNappiMc extends MovieClip
      	{
      		public var playpaalla:Boolean;
      		public function PlayPauseNappiMc()
      		{
      			// constructor code
      			stop();
      			playpaalla = false;
      			addEventListener(MouseEvent.CLICK, nappiaPainettu);
      		}
      		function nappiaPainettu(event:MouseEvent):void
      		{
      			//trace("jeee");
      			if (!playpaalla)
      			{
      				playpaalla = true;
      				nappiteksti.text = "PAUSE";
      			} else {
      				playpaalla = false;
      				nappiteksti.text = "PLAY";
      			}
      		}
      	}
      }
      
              
    4. tuodaan PlayPauseNappiMc.as luokkatiedosto samaan kansioon kuin Maze peli tiedstot
    5. kopioi PlayPauseNappiMc symboli maze pelin FLA tiedoston kirjastoon
    6. vaihdetaan SokkeloMain luokassa viittaus PelinAloitusNappi:sta PlayPauseNappiMc luokkaan
              
      	var pelinaloitusnappi:PlayPauseNappiMc; 
              

      konstruktorissa uusi koodi näin:

      	pelinaloitusnappi = new PlayPauseNappiMc();
              

      lisää lihavoidut SokkeloMain luokkaan

              
              		function aloitusNappiaPainettu(event:MouseEvent):void
      		{
      			removeChild(pelinaloitusnappi);
      			addChild(taso1);
      			//setChildIndex(taso1,0);
      			taso1.x = -2;
      			taso1.y = -2;
      			
      			taso1.aloitaPeli();
      			addChild(pelinaloitusnappi);
      			pelinaloitusnappi.x= 10;
      			pelinaloitusnappi.y= 570;
      			pelinaloitusnappi.width = 70;
      			pelinaloitusnappi.height = 30;
      		}
              

      display_list_programming_as3