F22-PropertyTest

 F22_PropertyTest : Property-ak  erabiltzen ikasteko

Ikus dezagun aldagaiei balioa beste modu batera  esleitzeko modua. Horretarako [Property] modura deklaratuko ditugu aldagaiak, hori bai, klase-aldagaiak izan behar dira eta beraz maiuskulaz hasita izendatuko ditugu eta funtzioetatik kanpo definituko ditugu!

Halako aldagaiei hasierako balioa aldatu ahal izango diegu beste propietateei bezala, kodea ukitu gabe.

Sortu ZilchScript berria:  F22_PropertyTest  (Add-->Resource (ZilchScript))

class F22_PropertyTest : ZilchComponent
{
  //Hasieran bizirik ala hilda dagoen jakiteko  
  [Property]
  var Bizirik:Boolean=true;
  //Bizirik dagoenean (Bizirik==true), objektuak zein kolore hartuko duen definitzeko
  [Property]
  var ColorBizirik:Real4 =Real4(0.0,0.0,0.0,1);
  //Hilda (Bizirik==false) dagoenean, objektuak zein kolore hartuko duen definitzeko  
  [Property]
  var ColorHilda:Real4 =Real4(0.0,0.0,0.0,1);
  //Esango diogu zein den atzeko planoaren kolorea aldatzeaz arduratzen den objektua(Renderer dela esan beharko diogu!)
  [Property]
  var RendererCogPath:CogPath=CogPath();
  //Bizirik dagoenean fondoak zein kolore hartuko duen definitzeko
  [Property]
  var BackColorBizirik:Real4 =Real4(0.0,0.0,0.0,1);
  //Hilda dagoenean fondoak zein kolore hartuko duen definitzeko
  [Property]
  var BackColorHilda:Real4 =Real4(0.0,0.0,0.0,1);



  function Initialize(init : CogInitializer)
  {
//Bizirik badago, (Bizirik "true" ipini badugu), fondo kolorea aldatuko dugu eta baita objektuaren kolorea
 if (this.Bizirik)
{
      if (this.RendererCogPath.Cog != null)
      {
        //Fondo kolorea aldatu (Bizirik dagoela kontutan izanda=>BackColorBizirik)
        this.RendererCogPath.ForwardRenderer.ClearColor=this.BackColorBizirik;
      }
   
      //Objektu HONEN kolorea aldatu 
      this.Owner.Sprite.VertexColor=this.ColorBizirik;
}
else
{
       //Hemen soilik sartuko da Bizirik propertyaren balioa EZ BADA true
      if (this.RendererCogPath.Cog != null)
      {
        //Fondo kolorea aldatu (hilda dagoela kontutan izanda)
        this.RendererCogPath.ForwardRenderer.ClearColor=this.BackColorHilda;
      }
   
      //Objektu egokiaren kolorea aldatu 
      this.Owner.Sprite.VertexColor=this.ColorHilda;
}

        //Zero.Connect( this.Space, Events.LogicUpdate, this.OnLogicUpdate);

}


  function OnLogicUpdate(event : UpdateEvent)
  {
  }

}

  • Goiko programa esleitu LevelSettings objektuari. Zer gertatzen da? Non dago akatsa? Sprite bat izan behar da, bestela this.Owner.Sprite.VertexColor ez da existituko eta akatsa emango du konpilatzerakoan!
  • Desegin aurreko pausua, hau da LevelSetting objektutik kenduko dugu.
  • Orain ziurtatuko dugu script hau BETI esleituko diogula Sprite osagaia duen objektu bati. Horretarako, laranjaz azpimarratuko kodea itsatsi property-ak definitzen hasi baino lehen, baina klasearen giltzaren ondoren:
class F22_PropertyTest : ZilchComponent
{
    // Honela esaten diogu derrigorrez Sprite osagaia duen objektu bati esleitu behar zaiola.
    [Dependency]
    var Sprite : Sprite = null;
Orain, saiatzen bazara  LevelSettings objektuari esleitzen ikusiko duzu ez dizula aukera ematen.
  • Sortu bi sprite: bat karratu bat (zuria) "Pertsonaia" izenekoa eta beste bat  (zuria ere) "Baloia" izenekoa, noski forma esferikoa duena. Esleitu biei F22_PropertyTest osagai hau
  • Orain, bakoitzari propietate guztiak konfiguratu. Aukeratu bakoitzean kolore desberdinak. RendererCogPath propietatea soilik bietariko batean (Pertsonaian adibidez) konfiguratu Renderer izeneko objektua aukeratuz.
Azalpena:
Scripta exekutatuko da Baloia eta Pertsonaia objektuak sortzeko momentuan eta Baloiaren  kasuan adibidez, this.Owner Baloia bera izango da. Beraz this.Owner.Sprite.VertexColor=this.ColorBizirik;  komandoaren bidez, bere Sprite izeneko osagaiaren VertexColor ezaugarriaren balioa aldatuko da, Script honetan definitutako ColorBizirik izeneko Property-an aukeratu dugun kolorea hartuko duelarik.

Pertsonaia sortzerakoan ere, script-a exekutatuko da baina Property-etan honek balio desberdinak izango ditu eta beraz kolore desberdina hartuko du.

this.Owner : erreferentzia egingo dio beti ZilchScriptaren jabeari. Ondoren, puntu baten bidez bere osagaietariko bat ipini eta beste puntu baten bidez osagai horretako propietateriko baten izena ipini. Horrela ezaugarri horri balioa esleitu ahal diogu ala alderantziz, ezaugarri horren balioa erabili dezakegu horren arabera gauza desberdinak egiteko.

iruzkinik ez:

Argitaratu iruzkina

Idatzi zure komentarioa. Laster argitaratuko dut. Mila esker!