# La classe SWFAction

(PHP 5 < 5.3.0, PECL ming SVN)

## Introduction

SWFAction.

## Synopsis de la classe

SWFAction {
/* Méthodes */
__construct ( string `$script` )
}

## Description

La syntaxe de script est basée sur le langage C, mais avec beaucoup de différences : le bytcode SWF est simplifié pour ne faire que ce dont on a besoin. Actuellement, nous ne pouvons pas implémenter des appels à des fonctions sans d'affreux hacks, car le bytecode a des valeurs de position codées en interne.

Que reste-t-il donc ? le compilateur reconnaît les instances suivantes :

- break
- for
- continue
- if
- else
- do
- while

Il n'y a pas de données typées ; toutes les valeurs d'une action SWF sont stockées sous la forme de chaînes de caractères. Les fonctions suivantes peuvent être utilisées dans les expressions :

time()
  Retourne le nombre de millisecondes effectuées depuis le début d'une vidéo.
random(seed)
  Retourne le nombre pseudo-aléatoire dans la rangée 0-seed.
length(expr)
  Retourne la longueur de l'expression donnée.
int(number)
  Retourne le nombre donné arrondi au nombre inférieur.
concat(expr, expr)
  Retourne la concaténation des expressions données.
ord(expr)
  Retourne le code ASCII pour le caractère donné.
chr(num)
  Retourne le caractère pour le code ASCII donné.
substr(string, location, length)
  Retourne la sous chaîne de la longueur `length` à la position `location` de la chaîne `string` donnée.

De plus, les commandes suivantes peuvent être utilisées :

duplicateClip(clip, name, depth)
  Duplique la vidéo nommée `clip` (c'est-à-dire sprite). La nouvelle vidéo a le nom `name` et est à la profondeur `depth`.
removeClip(expr)
  Efface la vidéo fournie.
trace(expr)
  Écrit l'expression donnée dans l'historique des traces.
startDrag(target, lock, [left, top, right, bottom])
  Démarre le déplacement de la vidéo `target`. L'argument `lock` indique si l'on verrouille la souris : utilisez 0 (`FALSE`) ou 1 (`TRUE`).
stopDrag()
  Commence le déplacement.
callFrame(expr)
  Appel la frame nommée, comme une fonction.
getURL(url, target, [method])
  Charge l'URL donnée, dans la cible nommée. L'argument `target` correspond à la cible du document HTML (comme "_top" ou "_blank"). L'argument optionnel `method` peut être POST ou GET si vous voulez soumettre les variables au serveur.
loadMovie(url, target)
  Charge l'URL donnée dans la cible nommée. L'argument `target` peut être le nom d'une frame, ou une des valeurs magiques : "_level0" (remplace la vidéo courante) ou "_level1" (charge la nouvelle vidéo au dessus de la vidéo courante).
nextFrame()
  Se place sur la prochaine frame.
prevFrame()
  Se place sur la dernière (ou, plutôt, précédente) frame.
play()
  Commence à jouer la vidéo.
stop()
  Arrête de jouer la vidéo.
toggleQuality()
  Passe d'une qualité haute à basse, et inversement.
stopSounds()
  Arrête de jouer tous les sons.
gotoFrame(num)
  Se place sur la frame numéro `num`. Les numéros de frame commencent à 0.
gotoFrame(name)
  Se place sur la frame nommée `name`.
setTarget(expr)
  Définit le contexte de l'action.

L'expression frameLoaded(num) peut être utilisée dans les instructions if et les boucles while pour vérifier si le numéro de frame donné a déjà été chargé.

Les vidéos, c'est à dire des sprites, ont des propriétés. Vous pouvez les lire, en définir quelques unes. Voici la liste :

- x
- y
- xScale
- yScale
- currentFrame : (lecture seule)
- totalFrames : (lecture seule)
- alpha : degré de transparence
- visible : 1=on, 0=off
- width : (lecture seule)
- height : (lecture seule)
- rotation
- target : (lecture seule)
- framesLoaded : (lecture seule)
- name
- dropTarget : (lecture seule)
- url : (lecture seule)
- highQuality : 1=high, 0=low
- focusRect
- soundBufTime

Donc, définir la position d'un sprite est aussi simple que /box.x = 100;. Pourquoi le slash au début ? C'est la façon dont Flash garde une trace des sprites dans une vidéo, tout comme le système de fichiers Unix : ici, la boite est au premier niveau. Si le sprite nommée "box" a un autre sprite nommé "biff" au dessous, vous pouvez définir sa position comme ceci : /box/biff.x = 100;

## Sommaire

- SWFAction::__construct — Crée un nouvel objet SWFAction