tutoriale si ganduri mici din programare

Citrus Engine

Citrus Engine este un game engine de tip platforma sidescrolling realizat in ActionScript 3.0 avand ca motor fizic Box2D.

De curand Citrus Engine este oferit gratuit pentru scopuri educationale. Asa ca daca esti student, profesor sau doar daca vrei sa folosesti un game engine in scopuri educative poti sa folosesti cu incredere Citrus Engine.

Cei care vor sa scoata profit de pe urma jocurilor create cu Citrus Engine pot cumpara licenta.

Download Citrus Engine
Download Box2D

Dupa cum stiti (sau nu) cu CSS putem formata si stiliza textul intr-o pagina web in nenumarate feluri. Acum ne vom ocupa de stilizarea linkurilor. Pentru acest lucru avem nevoie de cateva proprietati ale linkurilor si anume: a:hover si a . Prima proprietate reprezinta trecerea cursorului peste link.

Aceste doua stari ale unui hyperlink le putem imbina cu diferite formatari CSS pentru a integra mai bine linkurile in designul nostru sau pentru a da acestora tot felul de efecte.

In continuare sunt cateva exemple de stilizare a linkurilor (codul CSS si efectul produs):

  • Schimbarea culorii
  • a {color: green;}
    a:hover {color: red;}

  • Schimbarea marimii
  • a {}
    a:hover {font-size: big;}

  • Link fara underline
  • a {text-decoration:none;}
    a:hover {text-decoration:none;}

  • Link tip buton
  •  a {text-decoration:none;background: silver; color: black; padding: 5px;}
    a:hover {text-decoration:none;background: black; color: white; padding: 5px;}

  • Schimbarea cursorului
  • a {text-decoration:none;background: silver; color: black; padding: 5px;}
    a:hover {text-decoration:none;background: black; color: white; padding: 5px; cursor: help;}


    Dupa cum vedeti se pot implementa tot felul efecte pentru linkuri. Putina imaginatie si iese ceva frumos.

    De obicei in Internet Explorer si Firefox in momentul in care apasam pe un link (link text sau link imagine) este inconjurat de un border punctat.

    Cum facem sa scapam de acest border al linkului? Este foarte simplu: formatam linkurile de pe pagina cu CSS.

    a:active, a:focus{
        outline: none; /*sau outline:0;*/
    }

    a:active = cand se apasa butonul mouseului
    a:focus = cand se elibereaza butonul mouselui

    ActionScript 3.0 suporta “Programarea Orientata pe Obiecte” (Object Oriented Programming OOP).

    Hai sa vedem cum se face declararea unei clase in ActionScript 3.0 si cum arata metodele si proprietatile clasei.

    package
    {
       public class Bomboana
       {
          //Constructor
          public function Bomboana(numeBomboana:String)
          {
             nume=numeBomboana;
          }
     
          //Proprietati
          public var nume:String;
          public var culoare:String;
     
          //Metode
          public function seteazaCuloarea(culoareBomboana:String):void{
             culoare=culoareBomboana;
          }
     
          public function afiseazaBomboana():String{
          	 trace("Bomboana cu numele "+nume+" are culoarea "+culoare);
          }
       }
    }

    Sa ne gandim la o clasa ca la o forma de bomboane. Cu o forma de bomboane putem sa facem mai multe bomboane (la fel sau diferite prin culoare, marime, gust,etc). Bomboanele astfel create se numesc obiecte (instante ale clasei).

    Folosind clasa de mai sus haideti sa realizam doua bomboane diferite. Una sa fie o bomboana cu gust de capsuni si alta mentolata.

    //Definim cele doua bomboane si le dam nume apeland constructorul clasei.
    var bomboana1:Bomboana = new Bomboana("BomboanaCapsuni");
    var bomboana2:Bomboana = new Bomboana("BomboanaMenta");
     
    //Stabilim culoarea bomboanelor apeland metoda seteazaCuloarea().
    bomboana1.seteazaCuloarea("rosu");
    bomboana2.seteazaCuloarea("verde");
     
    //Afisam cele 2 bomboane apeland metoda afiseazaBomboana().
    bomboana1.afiseazaBomboana();
    bomboana2.afiseazaBomboana();
     
    //Modificam culoarea primei bomboane modificand direct proprietatea "culoare" si apoi o afisam.
    bomboana1.culoare="galben";
    bomboana1.afiseazaBomboana();

    Codul de mai sus va face sa apara in output-ul debug urmatoarele:

    Bomboana cu numele BomboanaCapsuni are culoarea rosu
    Bomboana cu numele BomboanaMenta are culoarea verde
    Bomboana cu numele BomboanaCapsuni are culoarea galben

    Daca declaram proprietatea “culoare” drept private si nu public atunci accesul la ea se putea face doar in interiorul clasei nu si din afara (valabil si pentru metode).

    Prin acest articol nu doresc sa prezint toate conceptele programarii orientata pe obiecte ci doar un minim de cunostinte pe larg si cum apar ele in ActionScript 3.0 si faptul ca se aseamana destul de mult cu alte limbaje de programare.

    La multi ani 2010

    La multi ani si toate cele bune! Ne revedem cu forte proaspete in 2010.

    Functiile sunt bucati de cod care pot fii reutilizate oricand in cod sau operatii customizate in ActionScript. In acest tutorial vom invata cum se declara o functie in ActionScript si cum putem utiliza respectiva functie.
    Pe langa functii mai exista si metode ale claselor. Sunt doua termene diferite dar care se aseamana destul de mult. Vom invata despre metode in alt tutorial cand vom discuta despre clase.

    In tutorialul Hello World! in FlashDevelop
    am declarat functia principala HelloWorld() care are acelasi nume ca al clasei si care de fapt este un constructor. Ideea este ca atunci cand avem un fisier ActionScript(.as) si vrem sa il folosim ca sine statator adica sa il compilam si sa il rulam trebuie neaparat sa avem aceasta functie principala. Pe langa functia principala putem crea cate functii vrem si le putem apela fie din functia principala fie in interiorul altor functii.

    O functie o vom declara in general in felul urmator:

    1
    2
    3
    4
    
    function numeFunctie(argument):tipulReturnat
    {
        declaratii;
    }

    Haideti acum sa gandim o functie care primeste doi parametri(numere), calculeaza suma si o afiseaza in debug output (trace).

    1
    2
    3
    4
    5
    6
    
    function suma(a:Number, b:Number):void
    {
        var s:Number; //Declaram variabila care va retine suma celor doi parametri.
        s=a+b; //Calculam suma.
        trace("Suma este: " + s); //Afisam suma.
    }

    Dar aceasta functie efectiv nu face nimic daca nu o si folosim.
    In continuare vom crea un fisier “Main.as” si vom folosi aceasta functie.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    package
    {
        import flash.display.Sprite;
     
        public class Main extends Sprite
        {
            public function Main() 
            { 
                suma(4, 3); //Apelam functia si ii dam ca paramentrii numerele 4 si 3.
                suma(102, 8); //Putem sa apelam functia de cate ori dorim.
            }
     
           function suma(a:Number, b:Number):void
           {
               var s:Number; //Declaram variabila care va retine suma celor doi parametri.
               s=a+b; //Calculam suma.
               trace("Suma este: " + s); //Afisam suma.
           }
        }
    }

    Daca compilam si rulam programul de mai sus in output vom avea afisat:

      Suma este: 7
      Suma este: 110

    In concluzie functiile din ActionScript 3.0 sunt asemanatoare cu cele din C/C++, PHP, Java,etc. Difera doar modul declararii lor.

    A venit iarna!

    A venit iarna. De 3 zile ninge. Traficul este infernal, trenurile au intarzieri, este frig, la munca toti sunt foarte aglomerati.

    Ce bine era cand eram copii. Nici o grija, nici un stres.

    Acum nu mai avem timp nici sa respiram.

    PHP Funks!: Testeaza online

    Claudiu a lansat saptamana asta PHP Funks!.

    PHP Funks! este un site/blog util pentru web developeri.

    Site-ul contine un blog. Blogul va contine, evident, articole. Articolele vor contine tutoriale, snippet-uri, sfaturi bune si sfaturi proaste si evident frustrari personale (ale lui Claudiu) daca e cazul ca asa e la moda

    Site-ul mai contine o pagina cu functii PHP, ca un help file. Functiile sunt prezentate sub forma de descriere, exemplu si un “testbed” unde putem vedea exact cum ar arata outputul in cazul in care vrem sa folosim functia X.

    In concluzie pe langa blogul util mai contine si ideea originala de a testa anumite functii PHP rapid si online.

    Mult succes Claudiu cu acest proiect ambitios!

    IDE-ul meu preferat. Aruncati o privire.

    NetBeans 6.8 RC1

    In tutorialul TextField am invatat sa afisam in fereastra Flash un text.

    Daca va mai aduceti aminte am folosit urmatorul cod pentru definirea acelui text:

    1
    2
    
    var mesaj:TextField = new TextField;
    mesaj.text="Hello Universe!";

    Mai intai am creat o variabila cu numele “mesaj” de tipul TextField. TextField este un tip de date mai complex dar pe langa “tonele” de tipuri de date complexe din ActionScript 3.0 exista si cele simple ca numere intregi, siruri de caractere, vectori si asa mai departe.

    Haideti sa declaram cele mai obisnuite tipuri de date care se folosesc in “codul cel de toate zilele”.

    1
    2
    3
    4
    5
    
    var numar:Number = 2.5;
    var numarIntreg:int = -5;
    var sirCaractere:String = "un text";
    var logic:Boolean  = true;
    var vector:Array = [2, 4, 6];

    Declaratiile de mai sus nu au nevoie de nici o explicatie iar sintaxa pentru declararea unei variabile este urmatoarea:

    var NumeVariabila:TipVariabila = ValoareVariabila;