Flash si Actionscript

Raze X pentru Flash!

Salutare lume,

Acum ceva timp lucram la un proiect si ma impolmolisem cu o chestie, nu puteam sa sterg un movieclip. Am stat, am cautat, am verificat caile catre movieclip, totul era OK, movieclip-ul exista, calea era buna, dar tot nu reuseam sa-l sterg. Atunci mi-a venit ideea sa caut prin HELP, cand colo dau peste un mic paragraf in help, si sa nu-mi vina sa cred ce citesc acolo, ca movieclip-urile care au DEPTH-ul NEGATIV nu pot fi sterse folosind comanda removeMovieClip()! Acest lucru mi-a schimbat proiectul, acum totul mere bine si frumos!

Revenind la subiectul nostru, o chestie foarte utila in Flash este ca atunci cand ai multe movieclip-uri intr-un alt movieclip care sunt unele peste altele, care sunt _visible = false, care au _alpha = 0; si vreti sa vedeti ce/cum/cand/unde despre movieclip-urile voastra, folositi acest cod foarte simplu:

for(var i in cale)
{
    trace(cale[i]);
}

sau concret un exemplu, avem in _root un movieclip, numit main_mc, in main_mc aveam alte 10 movieclip-uri subMain0_mc pana la subMain9_mc. Unele au _alpha property (10,50,67) si tot asa...(puteti pune orice property vreti,_x,_y,_xscale etc.)
In _root vom scrie asa:
for(var i in main_mc)
{
   trace(main_mc[i]);
   trace("Movieclip-ul "+main_mc[i]+" are coordonata x: "+main_mc[i]._x);
   trace("Movieclip-ul "+main_mc[i]+" are coordonata y: "+main_mc[i]._y);
   trace("Movieclip-ul "+main_mc[i]+" are alpha de: "+main_mc[i]._alpha);
   trace("Movieclip-ul "+main_mc[i]+" are depth-ul de: "+main_mc[i].getDepth());
}

Sau daca vreti sa folosit de mai multe ori acest lucru, dar fara sa rescrieti/modificati defiecare data, faceti o functie si apelati functia cu movieclip-ul/calea dorit/a:
Un mic exemplu:
function razeX(clip_path)
{
	for(var i in clip_path)
	{
		trace(clip_path[i]);
                /*
                * Puteti completa voi ce vreti sa va afiseze trace-ul, vedeti exemplul de mai sus.
                */
	};
}
razeX(main_mc);

Aceste articol ofera doar o mica parte din ceea ce puteti face cu razeX. De voi depinde ceea vreti sa aflati din proiectul vostru.

TIP: puteti sa faceti trace si la o variabila/array/object/textfield! Dar trebuie sa folositi instanceof sau typeof!

Oricum exista in lumea Flash un tool foarte avansat, XRAY (il gasiti aici http://osflash.org/xray ) dar este foarte complex, daca aveti nevoie de o chestie rapida, faceti o functie, folosit-o si aveti RazeX in Flash-ul vostru!

Sper ca va este de ajutor acest articol! Bafta in continuare!

I'll be back!

reguli in programare

nu exista o categorie generala pentru programare asa ca le pun la AS pentru ca de aici am auzit de ele, dar este valabil pentru orice limbaj:

http://extremeprogramming.org/rules.html

Flash Remoting in Flash 8 cu AMFPHP

Salutare dragi impatimiti ai Web-ului!

Primult meu articol pe Web Design Box (un site de unde am invatat multe alte lucruri) va fi despre Flash Remoting si AMFPHP (basic).

Acest articol se adreseaza celor care vor sa foloseasca Flash cu MySQl si sa nu scrie foarte multe lucruri in PHP.

Cu ce ne vom juca azi:

  • Macromedia Flash 8
  • AMFPHP
  • MySQL

Articolul va avea 3 sectiuni principale:

  1. Configurarea / instalarea AMFPHP-ului
  2. Codarea in Flash inline

1. Configurarea / instalarea AMFPHP-ului

Pentru a configura AMFPHP aveti nevoie de un server localhost sau daca aveti access de un web server al vostru il puteti instala acolo. Pentru a download-a AMFPHP intrati pe site-ul AMFPHP la sectiunea Download. Dupa ce ati descarcat AMFPHP-ul pe calculatorul vostru si l-am dezarhivat copiati tot continului lui (amf-core, browser, services, etc.)in htdocs (daca folosit xampp) sau www (daca folositi wamp) sau unde aveti voi localhost-ul pe calculatorul vostru, in folderul flashservice (pe care-l creati). Apoi accesati

 
<?php
class flashRemoting
{
  var $username = 'root';
  var $password = '';
  var $database = 'myservice';
  var $host = 'localhost';
 
  function flashRemoting()
  {
     $this->methodTable = array(
          "doRead" => array(
          "description" => "Functia de citire a bazei de date",
          "access" => "remote"
          )
     );
     $connect = mysql_connect($this->host, $this->username, $this->password);
     $select = mysql_select_db( $this->database );
  }
 
  function doRead()
  {
      $sql = sprintf("SELECT * FROM `%s` ORDER BY `id` ASC", 'myfirstservice');
      $result = mysql_query($sql);		
      return $result;		
  }  
}
?>

*Note: Salvam scriptul sub numele flashRemoting.php in folderul services din cadrul AMFPHP-ului de pe localhost (local server). Sursa flash / scripturile flash tot acolo se vor salva

Asta ar fi tot codul care-l scriem in PHP (nu a fost mult si nici greu). Sperand ca aveti o baza de date cu numele myservice si tabela myfirstservice cu minim 1 camp care sa fie macar putin completat. Daca nu folositi codul de mai jos:

CREATE DATABASE `myservice` ;
CREATE TABLE `myfirstservice` (
  `id` int(11) NOT NULL auto_increment,
  `nume` varchar(200) collate latin1_general_ci NOT NULL,
  `prenume` varchar(200) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

Completati campurile Nume si Prenume (sa zicem de 3 ori), id-ul nu trebuie completat deoarece se autoincrementeaza singur.

Gata cu PHP si MySQL, acum sa trecem in Flash.
Avem urmatorul cod, pe care-l voi explica treptat:

import mx.remoting.*;
import mx.rpc.*;
import mx.utils.Delegate;
 
/*
*
*Importam clasele de care avem nevoie pentru Remoting-ul din flash.
*
*/
 
var gatewayUrl:String = "http://localhost/flashservices/gateway.php";
var Nume:Array = new Array();
var Prenume:Array = new Array();
//link-ul catre gateway-ul nostru, modificati daca este nevoie
 
var service:Service = new Service(gatewayUrl, null, "flashRemoting");
 
//Declaram un nou serviciu care sa ne faca connexiunea catre php nostru folosind gateway.
 
//Functia de citire a bazei de date
function doRead()
{
	var pc:PendingCall = service.doRead();
//Sunam (folosesc acest termen ca sa intelegem) la serviciu si cerem cu functia din serviciul nostru creat mai sus
	pc.responder = new RelayResponder(this, "DoRead", DoReadError);
//Daca primim un raspuns apelam urmatoarea functie, DoRead, daca nu, apelam functia DoReadError
}
 
 
function DoRead(re:ResultEvent)
{
	var rs:RecordSet = RecordSet(re.result);
        //rs este un array care contine toate interogarile din baza noastra de date.
        for(var i:Number = 0; i < rs.length; i++)
        {
         Nume.push(rs.items[i]["nume"]);
//Adaugam in array-ul Nume toate inregistrarile din baza noastra de date din campul nume;
         Prenume.push(rs.items[i]["prenume"]);
//Adaugam in array-ul Prenume toate inregistrarile din baza de date din campul prenume;
        }
        DoWrite();
}
function DoWrite()
{
   for(var j:Number = 0; j < Nume.length; j++)
   {
     //Adaugati pe stage, 2 textfield-uri dynamice cu instance name-urile numeText, respectiv, prenumeText
     numeText._text += Nume[j]+newline;
     prenumeText._text += Prenume[j]+newline;
   }
}

Compilati movie-ul si ar trebuie sa apare in cele doua textfield-uri ce aveti in tabela din baza de date.

Pentru inceput atat, voi reveni cu un articol tot despre AMFPHP si Flash dar la un nivel putin mai avansat, sper sa va fi fost de ajutor!

** In cazul in am greseli va rog sa-mi spuneti

Top of page Top of page