La clase SWFAction
SWFAction
&reftitle.intro;
SWFAction.
&reftitle.classsynopsis;
SWFAction
SWFAction
&Methods;
&reftitle.description;
La sintaxis de script está basada en el lenguaje C, pero con mucho extraído- la
máquina de código de bytes de SWF es demasiado ingenua para hacer muchas cosas que nos gustaría.
Por ejemplo, no podemos implementar llamadas a funciones sin una enorme
cantidad de hackery ya que el código de bytes de salot tiene un valor de índice fuertemente
codificado. No se puede introducir sus direcciones de llamada a la pila y devolver-
cada función tendría que saber exactamente dónode devolver.
Entonces, ¿qué falta? El compilador reconoce los siguientes tokens:
break
for
continue
if
else
do
while
No existe información de tipo; todos los valores de la máquina de acciones de SWF están almacenados
como cadenas. Las siguientes funciones se pueden usar en expresiones:
time()
Devuelve el número de milisegundos (?) transcurridos desde el incio de la película.
random(seed)
Devuelve un número seudo-aleatorio en el rango de semilla 0.
length(expr)
Devuelve la longitud de la expresión dada.
int(number)
Devuelve el número dado redondeado hacia abajo al entero más cercano.
concat(expr, expr)
Devuelve la concatenación de las expresiones dadas.
ord(expr)
Devuelve el código ASCII del carácter dado
chr(num)
Devuelve el caráctar del código ASCII dado
substr(string, location, length)
Devuelve la subcadena de longitud length en la ubicación location del
la cadena string dada.
Además, se pueden usar los siguientes comandos:
duplicateClip(clip, name, depth)
Duplica el clip de película nominado (también conocido como sprite). El nuevo clip de película tiene el nombre de name
y profundidad de depth.
removeClip(expr)
Elimina el clip de película nominado.
trace(expr)
Escribe la expresión dad la registro de rastreo. the given expression to the trace log. Dudoso ya
que el plugin del navegador no hace nada con esto.
startDrag(target, lock, [left, top, right, bottom])
Empieza a dibujar el clip de película target. El argumento
lock indica si
bloquear el ratón (?)- use 0 (&false;) o 1 (&true;). Los parámetros opcionales
definen un área circundante para el dibujo.
stopDrag()
Deja de arrastrar mi corazón. Y este clip de película, también.
callFrame(expr)
Llama al fotograma nominado como una función.
getURL(url, target, [method])
Carga la URL dada en el objetivo nominado. El argumento target
se corresponde con los objetivos del documento HTML (como "_top" or "_blank").
El argumento opcional method puede ser POST o GET si se quieren enviar
variables al servidor.
loadMovie(url, target)
Carga la URL dada en el objetivo nominado. El argumento target puede ser un
nombre de fotograma (creo), o uno de los valores mágicos "_level0" (reemplaza
la película actual) o "_level1" (carga la nueva película encima de la película actual).
nextFrame()
Va al siguiente fotograma.
prevFrame()
Va al último (o, mejor dicho, al previo) fotograma.
play()
Inicia la reproducción de la película.
stop()
Detiene la reproducción de la película.
toggleQuality()
Conmuta entre alta y baja calidad.
stopSounds()
Detiene la reproducción de todos los sonidos.
gotoFrame(num)
Va al fotograma número num. Los números de fotograma empiezan en 0.
gotoFrame(name)
Va al fotograma llamado name. Que lo hace muy bien, ya que yo
no he añadido etiquetas de fotogramas todavía.
setTarget(expr)
Establece el contexto para la acción. O como se diga- No tengo ni idea
de los que hace.
Y hay una cosa rara extra. La expresión frameLoaded(num) se puede usar
en sentencias if y bucles while para verificar se el número de fotograma dado ya
ha sido cargado. Bien, se supone que sí, de todos modos, nunca lo he probado y
dudo seriamente que realmente funcione. En su lugar puede usar /:framesLoaded instead.
Los clips de película (ahora todos juntos- también llamados sprites) tienen propiedades. Se pueden
leer todos, establecer algunos de ellos, y aquí
están:
x
y
xScale
yScale
currentFrame - (solo lectura)
totalFrames - (solo lectura)
alpha - nivel de transparencia
visible - 1=on, 0=off (?)
width - (solo lectura)
height - (solo lectura)
rotation
target - (solo lectura) (???)
framesLoaded - (solo lectura)
name
dropTarget - (solo lectura) (???)
url - (solo lectura) (???)
highQuality - 1=high, 0=low (?)
focusRect - (???)
soundBufTime - (???)
Así, establecer la posición de un sprite es tan sencillo como /box.x = 100;.
Aunque ¿por qué la barra al inicio de box? Así es como flash sigue
la pista de los sprites en la película, como un sistema de archivos Unix-
aquí muestra que box está en el nivel superior. Si el sprite llamado
box tiene otro sprite llamado biff dentro de él, se debería establecer su
position x con /box/biff.x = 100;. Al menos eso creo; corríjame
si me equivoco.
&reference.ming.entities.swfaction;