61171041 Autoplay Media Studio Scritp

27
1 Conociendo el Action Script de Autoplay Media Studio 6 Por Jorge Espinoza En este post pretendo explicar poco a poco el Action Script de AMS 6, no lo conozco a profundidad, pero creo que entre todos y a través de las dudas podemos ir haciendo grande este tutorial. Varios compañeros del foro han iniciado la traducción del programa, por lo que omitiremos el uso de las herramientas del programa y nos enfocaremos solo al Action Script. Lo coloco aquí porque esencialmente el Action Script de AMS no es un lenguaje de programación como tal por muchas razones y lo inflexible para ampliarse (así que no puede ir en el foro de programación), no es un manual (por lo que no va en el foro de manuales), no es un tutorial para crear un Todo en Uno, a pesar de que el mayor uso que le damos es ese (así que tampoco iría en el foro de TEU), no es un problema técnico, a no ser que surjan dudas (por lo que tampoco puede ir el Servicio Técnico). En fin, creo que es un tema que nos atañe a mucho usuarios del foro, pero si un moderador o los M@ster ( Burla ) quieren moverlo, pues que le vamos a hacer… Bueno, esperolesresulteútil… Irédesarrollandolostemasenpost individuales para hacer más fácil la lectura (no para subir post, si quieren me los descuentan) y que la consulta sea más práctica.

Transcript of 61171041 Autoplay Media Studio Scritp

Page 1: 61171041 Autoplay Media Studio Scritp

1

Conociendo el Action Script de Autoplay Media Studio 6Por Jorge Espinoza

En este post pretendo explicar poco a poco el Action Script de AMS 6, no lo conozco a profundidad, pero creo que entre todos y a través de las dudas podemos ir haciendo grande este tutorial. Varios compañeros del foro han iniciado la traducción del programa, por lo que omitiremos el uso de las herramientas del programa y nos enfocaremos solo al Action Script.

Lo coloco aquí porque esencialmente el Action Script de AMS no es un lenguaje de programación como tal por muchas razones y lo inflexible para ampliarse (así que no puede ir en el foro de programación), no es un manual (por lo que no va en el foro de manuales), no es un tutorial para crear un Todo en Uno, a pesar de que el mayor uso que le damos es ese (así que tampoco iría en el foro de TEU), no es un problema técnico, a no ser que surjan dudas (por lo que tampoco puede ir el Servicio Técnico). En fin, creo que es un tema que nos atañe a mucho usuarios del foro, pero si un moderador o los M@ster ( Burla ) quieren moverlo, pues que le vamos a hacer…

Bueno, espero les resulte útil… Iré desarrollando los temas en post individuales para hacer más fácil la lectura (no para subir post, si quieren me los descuentan) y que la consulta sea más práctica.

Page 2: 61171041 Autoplay Media Studio Scritp

2

INDICE

Pág N°

Consideraciones previas importantes......................................................................3Variables..................................................................................................................4Los operadores........................................................................................................4Estructuras de Control .............................................................................................5Eventos más comunes ............................................................................................7Cómo puedo abrir un archivo ejecutable desde mi aplicación. ................................7Abrir un archivo que no es ejecutable con la aplicación asociada. ..........................8¿Cómo puedo crear un botón u objeto que explore una carpeta de mi proyecto o del disco duro? ........................................................................................................9¿Cómo puedo tener al tanto mi aplicación de los eventos que suceden? .............10¿Cómo logro que mi aplicación principal se minimize, ejecute un archivo, y al cerrar el programa que se ha ejecutado la aplicación principal se restaure? ........11¿Cómo puedo hacer que la ejecución del Action Script se interrumpa por un tiempo determinado? .............................................................................................11¿Cómo puedo cambiar de una página a otra en mi aplicación de AMS? ..............12¿Cómo logro reproducir una animación flash en la página uno y al terminar que automáticamente cambie a la página 2? ...............................................................12¿Cómo hacer un cartel de bienvenida, donde el scroll text se haga automaticamente desde abajo hacia arriba? .........................................................13¿Cómo creo un Splash Screen para mi aplicación? ..............................................14¿Cómo puedo obtener las rutas del sistema? .......................................................15¿Cómo copio un archivo o directorio a través de una acción declarada en mi proyecto?...............................................................................................................16¿Cómo crear una carpeta cualquiera en un sitio determinado que el usuario quiera definir, por ejemplo en una carpeta dentro de un directorio cualquiera...? ............17Conociendo el objeto Menu Bar.............................................................................18Montando una ISO con Daemons Tools instalado en el equipo. ...........................20Desmontando una ISO de Daemons Tools ...........................................................21Obteniendo la ruta de archivos de programa y comprobando si Daemons está o no instalado en el equipo............................................................................................21¿Cómo hacer que un programa listado en un ListBox o ComboBox se ejecute?..22¿Cómo podria copiar una carpeta con unos archivos desde el menu que estoy creando haciendo clik en un boton a C:\Archivos de Programa y que ademas salga una barra de proceso con el porcentaje hasta ke acaba? .....................................23¿Como crear un botón o dos botones que activen o desactiven el audio en nuestro proyecto, pero que muestren el estado del audio según sea el caso? ..................24

Page 3: 61171041 Autoplay Media Studio Scritp

3

Consideraciones previas importantes.

- El Action script es global, es decir, todas las variables y eventos están en contacto entre si. Es decir, no importa que un evento sea invocado desde otro botón, la variable asignada estará disponible para todo el proyecto.

- El Action script es sensible a mayúsculas y minúsculas. Por ejemplo no es lo mismo declarar una variable como ABC, que como aBC.

- Como en los lenguajes de programación, es posible hacer comentarios en el Action Script para que el código sea más comprensible por nosotros y podamos editarlo con mayor facilidad. Como sabemos, los comentarios no forman parte del Action Script, y en el tiempo de ejecución lo escrito en comentarios se ignora. Un comentario debe iniciar con -- (dos guiones) y termina en la línea en que se redacta.

Cita:-- Este es un ejemplo de un comentario en una sola línea

- Si se requieren hacer comentarios de varias líneas estos no irán con dos guiones, sino encerrados entre --[[ y ]]--.

Cita:--[[ Esto es un ejemploDe un comentarioDe varias líneas]]--

- La delimitación de declaraciones de Action Script puede estar en una línea o en varias líneas. Si esta en una línea cada acción deberá ser separada por un ;(punto y coma).Por ejemplo:Script 1:Cita:a = 10MiVariable = a

Script 2:Cita:a = 10; MiVariable = a;

Script 3:Cita:a = 10;MiVariable = a;

Page 4: 61171041 Autoplay Media Studio Scritp

4

Cualquiera de las tres formas de escribir el código es correcto, sin embargo es recomendable que para evitar conflictos ocupen el método de terminar cada línea con punto y coma.

Variables

- Los nombres de las variables, como en algunos lenguajes de programación, deben empezar con una letra o con un guión bajo y pueden ser de cualquier extensión combinando letras y números, sin utilizar espacios. Obviamente los nombres de las variables no pueden repetirse ni usar como nombres palabras reservadas por el Action Script de AMS.Por Ejemplo, estos nombres son validos:Cita:astrNombre_Mi_Variabledata1data_1_23indexbResetnCount

Estos nombres no son correctos:Cita:11data%MyValue%$strDataforlocal_FirstName+LastName_User Name

- Las palabras reservadas por el Action Script de AMS son:Cita:and break do else elseifend false for function ifin local nil not orrepeat return table then trueuntil while

Los operadores

Page 5: 61171041 Autoplay Media Studio Scritp

5

- Es posible hacer operaciones con variables bajo los mismos operadores aritméticos que trabajamos en otros lenguajes de programación:Cita:+ (Suma)- (Resta)* (Multiplicación)/ (División)

Se puede usar por ejemplo:Cita:a = 5 + 2;

- En algunas ocasiones será necesario comparar valores o variables. Los operadores de relación usados en AMS son:Cita:> (Mayor que)< (Menor que)<= (Menor o igual que)>= (Mayor o igual que)~= (No es igual a)== (Es igual a)

Por ejemplo:Cita:a = 10;a > 300; -- La respuesta es Falso

- Los operadores lógicos del Action Script de AMS son:Cita:and (La respuesta será True si ambas variables u operadores son verdaderos)or (La respuesta será True si uno de los dos operadores o variables es verdadero)

- Para concatenar dos variables en el Action Script se usan dos puntos (..) por ejemplo:Cita:A = "Jorge"B = "Espinoza"C = A .. B -- C será igual a Jorge Espinoza

Estructuras de Control

- Las estructuras de control son muy similares a las de algunos leguajes de programación.

Estructura If

Page 6: 61171041 Autoplay Media Studio Scritp

6

Cita:if Condición thenSi se cumple hacer lo que se declare aquíElseDe lo contrario hacer lo que se declare aquíEnd

Por ejemplo

Cita:- La variable x inicialmente vale 50x = 50;--Si x es mayor que 10if x > 10 then-- Aquí mostrara el mensaje 1 si x es mayor que 10Dialog.Message("Mensaje 1", "x es más grande que 10");Else-- Aquí mostrara el mensaje 2 si X es menor que 10Dialog.Message("Mensaje 2", "x es más pequeño que 10");end

Estructura WhileCita:while Condición doMientras la condición no se cumpla, hacer lo que se declare aquíEnd

Por ejemploCita:-- La varaible a inicialmente vale 1a = 1;-- Mientras a sea menor que 10while a < 10 do-- Entonces se le sumará 1a = a + 1;-- Cuando a alcance el valor de 10 se detendrá esta estructuraend

Estructura Repeat (muy similar a While, aunque ya sabemos la diferencia)Cita:repeatRepetir esta acciónuntil Condición

Por ejemplo:Cita:-- La variable i vale inicialmente 1

Page 7: 61171041 Autoplay Media Studio Scritp

7

i = 1;repeat-- A la variable i se le sumará uno mientras…i = i + 1;-- Mientras i no sea mayor de 10until i > 10

Eventos más comunes

Konnichipuu: Bueno, faltan algunos principios básicos por definir, pero creo que lo mejor es ir explicándolos conforme vayamos trabajando con ellos para que sea un poco más claro su uso y aplicación práctica. Empezaremos explicando algunos de los eventos más comunes. Un evento como sabemos, es la acción que determina cuando se ejecutará una instrucción descrita en el Action Script en tiempo de ejecución.Los más comunes son:

On Clic: Determina que la acción se llevará a cabo cuando se haga clic sobre el objeto.On Close: La acción se llevará a cabo cuando una página determinada del proyecto se cierre.On Double-Click: La acción se llevará a cabo cuando se haga doble clic sobre el objeto.On Leave: La acción se llevará a cabo cuando el puntero del Mouse se mueva del area determinada por un objeto.On Show: La acción se llevará a cabo cuando una página determinada y los objetos en ellos sean cargados.On Shutdown: La acción se llevará a cabo cuando la aplicación principal de AMS sea cerrada.On Startup: La acción se llevará a cabo antes de que la aplicación sea cargada por completo. Es decir, cuando se abra el proyecto, antes de cargar los elementos de las páginas las acciones serán realizadas.

Cómo puedo abrir un archivo ejecutable desde mi aplicación.

Oki, primero tendremos que tener un botón o una etiqueta (Label) al que asignaremos el Action Script. El evento que utilizaremos será On Clic, con ello especificamos que la acción se llevará cabo al hacer clic en la etiqueta o botón. El Actión Stript que usaremos será File.Run, su estructura es la siguiente:

Cita:File.Run ("Nombre y ubicación del archivo", "Parámetros si se requieren","directorio de trabajo si se requiere",Modo de ventana, ¿esperar?);

Nombre y ubicación de archivo: Se colocará la ruta del archivo que se ejecutará. Recordemos que en AMS se hace uso de \\ para separar directorios.

Page 8: 61171041 Autoplay Media Studio Scritp

8

Si el archivo se encuentra dentro de nuestro proyecto en una carpeta llamada Perro se escribiría: "Perro\\miarchivo.exe".Si el archivo estubiera en el disco duro en una carpeta llamada Perro se escribiría: "C:\\Perro\\miarchivo.exe".Parametros: Algunos ejecutables se les puede asignar parámetros para su inicialización. Si se requieren se agregará entre comillas. Por ejemplo si es un instalador que admite instalación silenciosa se escribiría "/S". Si no se requiere usar parametros se debe dejar como dos comillas seguidas "".Directorio de trabajo: Especifica el directorio de trabajo en que se ejecutará el archivo. Algunos programas ejecutables dependen de otros componentes que se encuentran en el mismo u otro directorio, por tanto si fuera necesario, en esteparámetro se deberá indicar ese directorio. Por ejemplo: "C:\\Temp", sino se requiere este parámetro, de igual forma se deben dejar dos comillas "".Modo de ventana: Específica de que forma se ejecutará el archivo en una ventana, los valores pueden ser:Cita:SW_SHOWNORMAL: NormalSW_MAXIMIZE: MaximizadoSW_MINIMIZE: Minimizado

Por último:¿Esperar?: Determina si la siguiente línea del Action Script debe esperar a que se cargue completamente antes de ejecutar la siguiente línea de código. Los valores pueden ser True (Verdadero) o False (Falso)

Ejemplo 1:Cita:File.Run("AutoPlay\\Docs\\setup.exe", "/s", "", SW_MAXIMIZE, true);--[[ Esta acción ejecuta el archivo Setup.exe ubicado en la carpeta Autoplay, subdirectorio Docs, aplicandole el parametro /s para instalación silenciosa, no especifica el directorio de trabajo, se ejecutará en una ventana maximizada y la siguiente línea de Action Script deberá esperar a que el programa sea cargado]]-

Ejemplo 2Cita:File.Run("notepad.exe", "AutoPlay\\Docs\\readme.txt", "", SW_SHOWNORMAL, false);--[[Esta acción abre el Bloc de notas, cargando el archive Readme.txt que se encuentra en la carpeta Autoplay subdirectorio Docs, no se especifica el directorio de trabajo, se ejecuta en una ventana normal y no esperá a que el programa se cargue para poder ejecutar la siguiente línea de Action Script]]--

Abrir un archivo que no es ejecutable con la aplicación asociada.De igual forma que con la acción File.Run necesitaremos un objeto al cual asociar la acción, el evento más común será On Clic.

Page 9: 61171041 Autoplay Media Studio Scritp

9

La Acción que utilizaremos será File.Open, la estructura de esta instrucción es:Cita:File.Open ("Nombre y ruta del archivo", "directorio de trabajo", Modo de Ventana);

Nombre y ruta del archivo: Lo mismo, se indicará la ubicación del archivo, si está en directorios se usará la doble diagonal inversa \\. Por ejemplo. "C:\\Miarchivo.doc" o "Autoplay\\Docs\\Miarchivo.doc".Directorio de trabajo: Especifica el directorio de trabajo en que se ejecutará el archivo. La estructura es la misa que en File.Run, sino se requiere se usarán las comillas "".Modo de ventana: Especifica la forma en que se abrirá la aplicación asociada al archivo que se abrirá.Cita:SW_SHOWNORMAL: NormalSW_MAXIMIZE: MaximizadoSW_MINIMIZE: Minimizado

Ejemplo 1Cita:File.Open("AutoPlay\\Docs\\readme.txt", "", SW_MINIMIZE);--[[Esta acción abre el archive Readme.txt del directorio Autoplay subdirectorio Docs con el bloc de notas o la aplicación asociada a los archivos TXT, sin especificar el directorio de trabajo, la ventana del programa aparecerá minimizada en la barra de tareas]]--

Ejemplo 2Cita:File.Open("c:\\Prueba.pdf", "", SW_MAXIMIZE);--[[Esta acción abre el archivo Prueba.pdf ubicado en el disco C: , sin especificar el directorio de trabajo, y con la ventana del programa asociado a los PDF de modo Maximizado.]]--

¿Cómo puedo crear un botón u objeto que explore una carpeta de mi proyecto o del disco duro?

De igual forma que con la acción File.Run o File.Open necesitaremos un objeto al cual asociar la acción, el evento más común será On Clic.Con esta acción abriremos en el explorador de Windows una carpeta que se especifique.La acción que utilizaremos será File.ExploreFolder, la estructura de esta acción es la siguiente:Cita:File.ExploreFolder ("Ruta del directorio", Modo de ventana);

Page 10: 61171041 Autoplay Media Studio Scritp

10

Ruta del directorio: Se indicará la ubicación del directorio a explorar, para separar subdirectorios se usará la doble diagonal inversa \\. Por ejemplo: "C:\\" o "Autoplay\\Docs" o "C:\\Windows\\Temp".Modo de ventana: Especifica el modo en que se abrirá la ventana del explorador de Windows:Cita:SW_SHOWNORMAL: NormalSW_MAXIMIZE: MaximizadoSW_MINIMIZE: Minimizado

Ejemplo 1:Cita:File.ExploreFolder("C:\\Documents and Settings", SW_MAXIMIZE);--[[Esta acción abre en el explorador de Windows la carpeta Documents and Settings del disco duro C: en una ventana Maximizada]]--

Ejemplo 2:Cita:File.ExploreFolder("Ya tengo sueño\\", SW_MINIMIZE);--[[Esta acción abre la carpeta Ya tengo sueño de nuestro proyecto en una ventana minimizada del explorador de Windows]]--

¿Cómo puedo tener al tanto mi aplicación de los eventos que suceden?

La acción Application.GetLastError () permite a nuestra aplicación en AMS saber si se ha llevado a cabo de manera correcta o incorrecta una acción. Está acción asignara un valor numérico a una variable y en base a ella podremos ejecutar una acción determinada, o valorarla a través de una estructura de control.Si la acción se lleva a cabo correctamente el valor de la variable será 0, sino asignará un valor distinto dependiendo del error (Más adelante iremos explicando los distintos errores).La estructura de esta acción es:Cita:Nombredelavariable = Application.GetLastError();

Nombre de la variable: es el nombre que se le asignará a la variable, recordando las reglas que ya explicamos más atrás.

Ejemplo:Cita:File.Open("c:\\Prueba.pdf", "", SW_MAXIMIZE);

Page 11: 61171041 Autoplay Media Studio Scritp

11

--Está acción abre el archivo Prueba.pdfAbrirprograma = Application.GetLastError();--[[Si el archivo se abre correctamente el valor de la variable "Abrirprograma" será 0, de lo contrario asignará un valor distinto a la variable dependiendo el tipo de error]]--

¿Cómo logro que mi aplicación principal se minimize, ejecute un archivo, y al cerrar el programa que se ha ejecutado la aplicación principal se restaure?

Ocuparemos las siguientes acciones que ya hemos visto:- File.run- Application.Minimize- Application.GetLastError- Application.RestoreY la estructura de control If.

Debemos asignar el siguiente Action Script a un objeto (botón, etiqueta, etc) en el evento On Clic y quedaría de la siguiente forma:

Cita:Action Script:Application.Minimize();-- Esta acción minimiza nuestra ventana principalresult = File.Run("notepad.exe","","", SW_SHOWNORMAL, true);--[[Está acción abre el bloc de notas, sin ningún parámetro y sin especificar el directorio de trabajo, en una ventana normal y el parámetro True indica que debe esperar a que la acción termine antes de ejecutar la siguiente línea de este código de Action Script]]--espera = Application.GetLastError();--[[A la variable "espera" se le asignará el valor de la última acción realizada, en este punto hay que explicar que la última acción fue esperar a que el bloc de notas se ejecutara, por tanto, la siguiente línea del código no se ejecutara mientras el bloc de notas siga abierto, y por tanto al cerrar el bloc de notas la variable "espera" tomará el valor de 0 de que se ha llevado a cabo correctamente la espera, por tanto se ejecutará la siguiente línea del código de Action Script]]--if espera == 0 then-- Aquí se evaluará la variable, si "espera" es igual que 0 entonces…Application.Restore();-- La aplicación principal deberá ser restaurada.End-- Fin del proceso

¿Cómo puedo hacer que la ejecución del Action Script se interrumpa por un tiempo determinado?Para este propósito existe la acción Application.Sleep, esta acción interrumpe todas las acciones en la aplicación de AMS durante un tiempo determinado

Page 12: 61171041 Autoplay Media Studio Scritp

12

previamente. Es decir, no se ejecutará ninguna de las acciones del Action Script ni la ventana responderá a cualquier acción del usuario.Su estructura es la siguiente:Cita:Application.Sleep ( Tiempo )

Tiempo: Es el tiempo que queremos que se interrumpa la acción, el valor debe ser numérico y declarado en milisegundos (recordando que 1000 milisegundos equivalen a 1 segundo)

EjemploCita:Application.Sleep (5000);--[[Esta acción interrumpe cualquier acción declarada o evento del usuario durante 5 segundos]]--

¿Cómo puedo cambiar de una página a otra en mi aplicación de AMS?

La acción para este fin es Page.Jump, y permite cambiar entre una página y otra de nuestra aplicación. Su estructura es la siguiente:Cita:Page.Jump ("Nombre de la página")

EjemploCita:Page.Jump("Page3");-- esta acción cambia la página actual a la página 3 de nuestro proyecto

¿Cómo logro reproducir una animación flash en la página uno y al terminar que automáticamente cambie a la página 2?

Par ello necesitaremos una animación Flash en la página 1 y saber cuanto dura la misma en segundos.Insertaremos nuestra animación flash, y a la página 1 en el evento On Showasignaremos el siguiente código de Action Script:

Cita:--[[Este Action Script se ejecutará al cargar la página 1]]--Application.Sleep(4000);--[[Una vez cargada la página 1, se ejecutará la animación Flash y transcurrirán 4 segundos (El tiempo que dura nuestra animación para este ejemplo) antes de que ejecute la siguiente línea de Action Script]]--Page.Jump("Page2");

Page 13: 61171041 Autoplay Media Studio Scritp

13

--[[Transcurridos los 4 que duraba nuestra animación esta línea de Action Script hará que cambie de la página 1 a la página 2]]-

¿Cómo hacer un cartel de bienvenida, donde el scroll text se haga automaticamente desde abajo hacia arriba?

Dentro de AMS existe un objeto llamado Paragraph que permite escribir texto en varias líneas y parráfos (El objeto label solo permite testo en una línea). Al objeto Paragraph se le pueden colocar barras de desplazamiento vertical u horizontal para desplazarnos a través del contenido del mismo.La posición relativa dentro de un Paragraph esta determinada por valores X y Y que indican la posición horizontal y vertical dentro del mismo. Por ejemplo, al indicar que Y = 0 quiere decir que la posición vertical será al principio del Paragraph.Existe una acción denominada Paragraph.SetScrollPos que permite definir la posición vertical u horizontal dentro de un objeto Paragraph. Su estructura es la siguiente:Cita:Paragraph.SetScrollPos ("nombre del objeto Paragraph", Posición, Modo)

Nombre del objeto Paragraph: Es el nombre que le hemos asignado al objeto Paragraph.Posición: El valor numérico de la posición, el mínimo es 0 y el máximo dependerá de lo extenso que sea el texto contenido en nuestro objeto Paragraph.Modo: Es un valor de tipo Bolean, por default es true, y ello significa que la Posición que asignemos en la acción será tomada de forma vertical, si el valor fuera False, entonces la posición se tomará de forma horizontal.

Ejemplo:Cita:Paragraph.SetScrollPos("Info Text", 25, true);--[[esta acción la barra de desplazamiento vertical en la línea 25 del objeto Paragraph llamado Info Text]]--

Ahora cómo aplicarlo para que se desplace automáticamente.

La acción la colocaríamos en el evento On Show de la página en que coloquemos el Paragraph y quedaría así, para desplazar de abajo hacia arriba:

Cita:Pos = 580;--[[Suponiendo que nuestro Paragraph tiene 580 líneas, a la variable Pos le asignaremos el valor de la última línea de nuestro Paragraph]]--Paragraph.SetScrollPos("Paragraph1", Pos, true)

Page 14: 61171041 Autoplay Media Studio Scritp

14

--[[Esta acción colocará la barra de desplazamiento vertical en la última línea de nuestro Paragraph]]--while Pos > 0 do--[[Mientras que la posición en nuestro párrafo sea mayor a la línea 0 entonces…]]--Pos = Pos - 1--[[A la variable Pos le restamos 1]]--Paragraph.SetScrollPos("Paragraph1", Pos, true);--[[Coloca el párrafo en la posición vertical del valor que ha tomado la variable Pos]]--End--[[Cunado se llegue a la línea 0, finalizará el proceso, si se quiere repetir, crearemos un bucle, pero como no veo práctico este código ya no sigo la explicación]]-

Problemas:1. Al hacer un desplazamiento de texto de abajo hacia arriba, el texto tendría que estar escrito de abajo hacia arriba. Sería más práctico si estuviera escrito como normalmente se hace, de arriba hacia abajo.2. Al ir restando 1 a la variable Pos se va retrocediendo un línea de forma vertical, pero como el proceso se efectúa muy rápido no es posible leer las líneas y técnicamente el efecto no se nota. Si se aplicara un efecto de pausa como el de application.sleep las demás acciones quedarían inutilizadas.3. Al ser un bucle infinito se consumen recursos que se podrían aprovechar de otra forma.4. No se puede eliminar físicamente la barra de desplazamiento vertical, pues si no el desplazamiento no se realiza.5. Estéticamente, a mi gusto, se me hace poco atractivo.6. El efecto se nota un poco más si se hace de arriba hacia abajo:

Cita:Pos = 0;Paragraph.SetScrollPos("Paragraph1", Pos, true)while Pos < 580 doPos = Pos + 1Paragraph.SetScrollPos("Paragraph1", Pos, true);

¿Cómo creo un Splash Screen para mi aplicación?

No tengo una definición de lo que es un Splash Scren, pero por si no se entiende es como la ventanita de Microsoft Word cuando lo abren en donde aparece el nombre del programa y que dura unos segundos mientras se carga el programa… Para crear este efecto en nuestra aplicación de AMS usaremos la acción Dialog.SplashImage, para que se cargue al inicio la acción deberá ser declarada en el evento general del proyecto On Startup, su estructura es la siguiente:

Cita:Dialog.SplashImage ("ruta y nombre de la imagen", tiempo de duración, ¿Salto?)

Page 15: 61171041 Autoplay Media Studio Scritp

15

Ruta y nombre de la imagen: Pues es eso, la ruta dentro de nuestro proyecto, así como el nombre de nuestro archivo. Tiene que ser una imagen, preferentemente JPG para no hacer pesada la carga. El tamaño de la imagen será el mismo del Splash Screen, entonces si la imagen mide 500 x 600 ese será el tamaño resultante en la splash screen.Tiempo de duración: El tiempo en segundos que durará en pantalla la splash screen¿Salto?: Es un valor de tipo boolean, si se indica True quiere decir que el usuario podrá omitir el tiempo de duración de la splash screen dando clic sobre ella, si se indica False el usuario deberá esperar el tiempo que se haya especificado para que se quite la splash screen.

Ejemplo:Código:Dialog.SplashImage("AutoPlay\\Images\\logo.jpg", 10, false);--[[la instrucción cargará al iniciar la plicación la imagen logo.jpg ubicada en la carpeta Autoplay, subdirectorio Images de nuestro proyecto, durante 10 segundos y el usuario no podrá quitar la splash screen]]-

¿Cómo puedo obtener las rutas del sistema?

A veces será necesario saber una ruta del sistema, por ejemplo la carpeta "Mis documentos", quizá para copiar un archivo, crear un acceso directo o comprobar si existe o no una archivo, etc.Sin embargo, debido a las distintas versiones de Windows y debido a que cada usuario puede cambiar estas rutas, a veces esta tarea no es tan sencilla.Por ejemplo, en Windows 98 la carpeta "Mis documentos" se encuentra en C:\Mis documentos, pero en Windows XP debido al uso de las cuentas de usuario la ruta es C:\Documents and settings\Usuario\Mis documentos. Eso sin contar que el SO puede no estar instalado en C:\.Para estos casos existe la acción Shell.GetFolder que permite averiguar las rutas más comunes de las carpetas del sistema dentro de cada SO. Su estructura es:

Cita:Nombre_de_la_variable = Shell.GetFolder ( Nombre de carpeta )

Nombre_de_la_variable: Es el nombre que asignaremos a la variable y que almacenara la ruta de la carpeta del sistema que solicitemos. Las reglas del nombre ya están descritas anteriormente.Nombre de carpeta: Indica la carpeta del sistema cuya ruta queremos conocer. Las más comunes son:

Código:

Page 16: 61171041 Autoplay Media Studio Scritp

16

SHF_FONTS : FuentesSHF_DESKTOP: Escritorio (para el usuario actual)SHF_DESKTOP_COMMON: Escritorio (para todos los usuarios)SHF_STARTMENUPROGRAMS: Menú de inicio / Programas (para el usuario actual)SHF_STARTMENUPROGRAMS_COMMON: Menú de inicio / Programas (para todos los usuarios)SHF_STARTUP: La carpeta de Inicio (para el usuario actual)SHF_STARTUP_COMMON: La carpeta de Inicio (para todos los usuarios)SHF_COMMONFILES: Archivos comunesSHF_PROGRAMFILES: Archivos de programaSHF_MYDOCUMENTS: Mis documentos (si es Windows 2k, Xp o 2k3 será solo par el usuario actual)

Ejemplo:Código:Mis_documetos = Shell.GetFolder(SHF_MYDOCUMENTS);--[[Esta acción averigua la ruta de la carpeta Mis documentos en el sistema y asigna la ruta a la variable Mis_documetos]]--

¿Cómo copio un archivo o directorio a través de una acción declarada en mi proyecto?Si se desea copiar un archivo o directorio, ya sea que forme parte de nuestro proyecto o se encuentre en el sistema la acción que usaremos será File.Copy. Su estructura es:

Cita:File.Copy ("Ruta y nombre del archivo origen", "Ruta de destino", ¿Subdirectorios?, ¿Sobrescribir?, ¿Abortar?, ¿Incluir archivos ocultos?, nil);

Ruta y nombre del archivo origen: Indica la ruta y nombre del archivo (s) o directorio (s) que se desean copiar. Si son varios archivos de un mismo tipo se puede usar el comodín * (*.txt, por ejemplo para todos los archivos de texto).Ruta de destino: Indica la ruta en que serán colocadas la(s) copia (s) de el (los) archivo (s) o directorio. También pude concatenarse con una variable.¿Subdirectorios?: Si es un directorio lo que se está copiando y no un archivo, este es un valor de tipo Boolean que indica que si el directorio contiene otros subdirectorios estos también se copiaran o no, si se indica True los subdirectorios se copiaran, si se indica False solo el directorio principal se copiará.¿Sobrescribir?: Es un valor de tipo boolean, si es true significa que puede sobrescribir archivos si estos ya se encuentran en la ruta especificada. Si es false omitira los archivos que ya existan en la ruta especificada.¿Abortar?: Es un valor de tipo boolean, si se indica True significa que si hay algún error (ya sea falta de espacio, que el archivo no se pueda copiar, que el archivo este dañado, etc) se cancelará la copia. Si se indica False significa que aun cuando existan errores la copia se realizará omitiendo los archivos que hayan dado error.

Page 17: 61171041 Autoplay Media Studio Scritp

17

¿Incluir archivos ocultos?: Es un valor de tipo boolean, si se indica True significa que se copiaran archivos y/o carpetas con propiedades como oculto o de sistema. Si se especifica False entonces se omitirán los archivos ocultos y/o de sistema.nil: Es el nombre de una función, si se indica nil significa que usando la acción StatusDlg.Show se podrá mostrar una barra con el progreso de la copia de archivos y/o carpetas, si se especifica False la acción StatusDlg.Show no podrá mostrar el progreso de la copia. La acción StatusDlg.Show y su contraparte StatusDlg.Hide la explicare más adelante.

Ejemplo:Código:File.Copy("AutoPlay\\Docs\\*.*", "C:\\Prueba\\", true, true, false, true, nil);--[[Esta acción copia todos los archivos contenidos en la carpeta Autoplay, subdirectorio Docs a la unidad C: directorio Prueba, incluyendo subdirectorios, sobrescribiendo archivos si fuese necesario, sin abortar si sucede algún error, incluyendo archivos ocultos y/o de sistema, y pudiendo mostrar el progreso si se usa la acción StatusDlg.Show.]]-

Usando en conjunto Shell.GetFolder y File.CopySupongamos que queremos copiar un archivo a la carpeta mis documentos, usando las dos acciones que ya hemos visto el action script quedaría de la siguiente forma:

Ejemplo:Cita:Prueba= Shell.GetFolder(SHF_MYDOCUMENTS);--[[Esta acción averigua la ruta de la carpeta Mis documentos en el sistema y asigna la ruta a la variable Prueba]]--File.Copy("AutoPlay\\Docs\\*.*", Prueba.."\\", true, true, false, true, nil)--[[No explicare toda la acción, pues si notan es la misma acción del ejemplo anterior, sin embargo, hay que notar que en el parámetro de destino se ha colocado la variable Prueba seguida de dos puntos, esto significa que la ruta de destino será la ruta que se le haya asignado a la variable prueba en conjunto de la ruta especificada, en este caso como no se especifica ninguna ruta los archivos se copiarán directamente en Mis documentos]]--

¿Cómo crear una carpeta cualquiera en un sitio determinado que el usuario quiera definir, por ejemplo en una carpeta dentro de un directorio cualquiera...?

Cita:StatusDlg.Show(MB_ICONNONE, false);--[[Está acción muestra un cuadro de dialogo con el porcentaje de progreso de las siguientes acciones]]--Folder.Create("C:\\Prueba");--[[Esta acción crea un directorio vacio en la ruta especificada]]--File.Copy("AutoPlay\\Docs\\Network and Security\\*.*", "C:\\Prueba\\", true, true, false, true, nil);

Page 18: 61171041 Autoplay Media Studio Scritp

18

--[[Esta acción ya la vimos, solo cabe aclarar algo que no puntualice en su momento es que para que la copia de archivos pueda realizarse el directorio que se especifique como destino debe existir, sino arrojaráun error]]--StatusDlg.Hide();--[[Está acción cierra y oculta el cuadro de dialogo con el porcentaje de progreso cuando la acción anterior se haya concluido, en este caso la cpia de archivos]]--

Conociendo el objeto Menu Bar

El objeto menu bar que se incorpora en la versión 6 de AMS nos permite crear barras de menú en nuestra aplicación como las que encontramos en la mayoría de los programas.Los menús como sabemos, están constituidos por niveles, es decir, las opciones principales de una barra de menú, por ejemplo en Internet Explorer, los menús Archivo, Edición, etc. constituyen el primer nivel de nuestro menú.A su vez, estos menús en su interior están compuestos por 1 o mas niveles a los cuales se les denomina como niveles secundarios.Por ejemplo, dentro del menú archivo en Internet Explorer encontramos las opciones nuevo, abrir, edición, etc… estas opciones constituyen el segundo nivel de nuestro menú archivo. En el menú Edición, las opciones cortar, copiar, pegar, constituyen nuestro segundo nivel y así sucesivamente.En algunos casos hay opciones dentro de los menús que a su vez tiene más niéveles en su interior, por ejemplo, el Menú Archivo, la opción Abrir, en su interior alberga las opciones ventana, un separador (------), mensaje, etc. estas opciones constituyen el nivel 3 de nuestro menú.Entonces si yo quisiera construir una barra de menú con el menú Archivo y dentro la opción Salir, y al lado el menú Ayuda y la opción "Acerca de". Estariamos hablando que la estructura sería la siguiente:

Código:Archivo - (Primer Nivel) Salir - (Segundo Nivel)Ayuda - (Primer Nivel) Acerca de… (Segundo Nivel)

Los Menus pueden ser verticales y horizontales?, Solo Horizontal y por default se crean la parte superior de la página en la que se inserte. Solo se admite una barra de Menú por página. Y hasta dónde tengo entendido no se pueden crear menús contextuales como en otras aplicaciones.

Creando una barra de menú

Para crear una barra de menú en nuestra aplicación de AMS iremos al menú Project y seleccionaremos la opción Menu Bar. Ello abrirá una ventana en la que configuraremos las opciones de nuestra barra de menú.

Page 19: 61171041 Autoplay Media Studio Scritp

19

La primera opción que debemos usar para que nuestra barra de menús pueda ser activada y creada será la opción "Show menú bar" con lo que se activará una barra de menú en la parte superior de nuestra aplicación.Seguido de haber activado nuestro menú proseguiremos a eliminar las opciones de menú que se crean por default para dejar limpia nuestra barra y comenzar a crear las opciones propias. Para ello seleccionaremos las opciones Main menú &1 y presionaremos el botón con la X roja en la parte inferior para eliminarlo, lo mismo haremos con el elemento Main menú &2Ahora, para crear las opciones que contendrá nuestro menú utilizaremos los botones en la parte inferior, el botón ADD. Cuando lo presionemos nos aparecerá una ventana con opciones en las que asignaremos las propiedades a nuestro menú, las propiedades a utilizar son:Menú ID: Esta propiedad asigna un valor numérico a cada uno de los elementos del menú, es muy importante puesto que la programación del action script a las opciones del menú se realizará n base al número de Id que se haya asignado.Se recomienda, que si el menú es de primer nivel se le asigne un número secuencial, por ejemplo, al menú archivo sería 1 y el menú Ayuda sería 2.Para los niveles secundarios se recomienda que se le asigne como ID un número secuencial, antecedido del número de ID del nivel primario del cuál se desprende la opción del menú:Por ejemplo:

Código:Archivo - (ID 1) Salir - (ID 11)Ayuda - (ID 2) Acerca de… (ID 21)

Text: La propiedad text determina el texto que aparecerá en la opción o menú.Enable: La propiedad Enable determina si la opción estará o no activa, es decir, si se podrá utilizar o no esa opción. Por default la opción Enable está activada.Checked: Esta propiedad asigna una marca antes del texto de la opción del menú para indicar que la opción está activada. Esta opción solo funciona con niveles secundarios.Separator: coloca una línea para separar las opciones dentro del menú. Está propiedad deshabilita el texto y las demás propiedades descritas así como el ID, pues estéticamente solo sirve como tal, es decir, para separar y no para asignar una opción al menú.Una vez que asignemos las propiedades al menú y aceptemos, en la parte inferior de la ventana de Menu Bar nos encontramos con cuatro flechas de dirección en color verde. Ellas nos permiten ordenar las opciones de la barra de menú que hemos agregado seleccionando el elemento que queremos ordenar y presionando los botones.Las flechas arriba y abajo nos permiten determinar el orden de los menús y sus opciones.

Page 20: 61171041 Autoplay Media Studio Scritp

20

El orden en que se asignen los menús es el mismo en el que aparecerá en la barra de menú.Los botones con la flecha izquierda y derecha nos permiten retroceder y/o subir un nivel de las opciones de nuestro menú.Recordemos:

Código:Archivo - (Primer Nivel) Salir - (Segundo Nivel) En esta opción debemos presionar una vez la flecha derecha, por ser un segundo nivel

La misma ventana de menu bar nos muestra la estructura de los menús. Al aceptar la estructura creada en la ventan menu bar será la misma dentro de nuestra barra de menú.

Montando una ISO con Daemons Tools instalado en el equipo.

Para montar una ISO en una unidad virtual a través de AMS utilizaremos la acción File.Run.Cabe aclarar, que aunque parezca obvio, Daemons Tools debe estar instalado en el equipo y tener al menos una unidad virtual.El Action Script se asignará a un botón en el evento On Click. Y tendría la siguiente estructura:

Código:result = File.Run("Ruta donde se encuentra instalado Daemons y el ejecutable daemons.exe", 'el parámetro -mount seguido del número de unidad virtual en que se montará la ISO, "Ruta de acceso y nombre de la ISO"', "", SW_SHOWNORMAL, false);

Notas:- Las rutas de acceso recordemos que serán declaradas con doble diagonal inversa \\, por ejemplo:

Código:C:\Archivos de programa\D-Tools\daemon.exe

Deberá escribirse:Código:C:\\Archivos de programa\\D-Tools\\daemon.exe

- El parámetro -mount deberá ser seguido de un espacio en blanco y el número de unidad virtual en que se montará la imagen. La primera unidad virtual es 0.

Page 21: 61171041 Autoplay Media Studio Scritp

21

- La ruta de acceso a la ISO deberá ser declarada igual con \\ si se encuentra dentro de una carpeta en nuestro proyecto.- No olvidar las comillas simples (') y las dobles (") que llevan los parámetros y la ruta de acceso a la ISO.

Ejemplo:

Código:result = File.Run("C:\\Archivos de programa\\D-Tools\\daemon.exe", '-mount 0, "NESTLE.iso"', "", SW_SHOWNORMAL, false);--[[Esta acción ejecuta Daemoms tools y monta la ISO Nestle.iso que está en la raíz de nuestro proyecto en la primera unidad virtual]]--

Si daemons no esta instalado, la ruta de acceso no es la correcta, no existe la unida virtual indicada o la ISO no está en la ruta especificada mandará un error.

Desmontando una ISO de Daemons Tools

Una vez montada la ISO, en otro botón podremos asignar el action script para desmontarla usando la acción File.Run.La acción tendría la siguiente estructura:

Código:result = File.Run("Ruta donde se encuentra instalado Daemons y el ejecutable daemons.exe ", 'El parámetro -unmount seguido de un espacio y el número de unidad en que se encuentra montada la ISO', "", SW_SHOWNORMAL, false);

Ejemplo:Código:result = File.Run("D:\\Archivos de programa\\D-Tools\\daemon.exe", '-unmount 0', "", SW_SHOWNORMAL, false);

Obteniendo la ruta de archivos de programa y comprobando si Daemons está o no instalado en el equipo.

Puede darse el caso que Daemons no este instalado o la ruta de acceso no sea la predeterminada (como en mi caso, que está instalado en D: y no en C:). Para ello optimizaremos el código de la siguiente forma.

Código:Prog = Shell.GetFolder(SHF_PROGRAMFILES);--[[Está acción obtiene la ruta de la carpeta Archivos de programa y le asigna la ruta a la variable Prog]]--Daemons = Folder.DoesExist(Prog.."\\D-Tools");

Page 22: 61171041 Autoplay Media Studio Scritp

22

--[[Esta acción comprueba si la carpeta de Daemons se encuentra en Archivos de Programa]]--if Daemons then--[[Inicia una estructura de control en la que la condición es si existe la carpeta de Daemons Tools en Archivos de programa]]--

result = File.Run(Prog.."\\D-Tools\\daemon.exe", '-mount 0, "NESTLE.iso"', "", SW_SHOWNORMAL, false);--[[Si existe, entonces montará la ISO a través de la acción que ya vimos, es de notar que la ruta de acceso a Daemons la hemos declarado concatenando la variable Prog y la ruta de acceso, algo que ya explique unos post antes]]--

Else--[[De lo contrario, sino existe la carpeta de Daemons Tools en Archivos de programa]]-- Dialog.Message("Error", "No se ha podido encontrar la ruta de instalación o no se ha instalado.", MB_OK, MB_ICONSTOP);--[[Está acción presenta un cuadro de dialogo con un mensaje indicando que Daemons no esta instalado en la ubicación predeterminada o no está instalado]]--End--[[Fin de la acción]]-

Notas:- El código puede perfeccionarse aún más, por ejemplo, solicitando la intervención del usuario para indicar donde se instaló si Daemons no está en la ruta predeterminada.- Si se requieren parámetros adicionales para Daemons s posible usarlos bajo la misma estructura. Los parámetros pueden ser consultados en la página que indicó Foderiko.

Bueno, espero que esto aclare la duda. En unos días más continuo con la explicación de Menu Bar que interrumpí con esta explicación, pero me pareció muy interesante explicar esto.

¿Cómo hacer que un programa listado en un ListBox o ComboBox se ejecute?Ayer cuando di respuesta a la pregunta de Carlos3007 no sé por qué se me fue el avión y explique como hacer que un programa se ejecute pero en un Listbox, cuando la pregunta original era cómo hacerlo con un ComboBox, y aunque en esencia no cambia mucho, el action script que indique no funcionaría en un combobox.Ahora si la explicación:Primero que nada recordemos que tanto el combobox como el listbox al llenarlos usan las propiedades item text e item data:Item text: Es el texto que queremos que aparezca en la lista o cuadro combinado.Item data: es la acción (en este caso la ruta del archivo que queremos que se ejecute) que realizará o un valor que se utilizara. Recordemos como otras veces que las rutas serán declaradas con \\ diagonal inversa si están en directorios.Por ejemplo, en un combobox o listbox colocamos esto:

Page 23: 61171041 Autoplay Media Studio Scritp

23

Código:Item Text Item DataBloc de notas Notepad.exeEditor del registro Regedit.exeMsConfig Msconfig.exe

A un botón en el evento on clic le asignamos el siguiente action script si utilizamos un Listbox:

Cita:selected = ListBox.GetSelected("ListBox1");--[[Esta acción asigna el elemento seleccionado a la variable selected]]--file = ListBox.GetItemData("ListBox1", selected[1]);--[[Esta acción asigna el Item Data del elemento seleccionado de la variable selected a la variable File]]--File.Open(file, "", SW_SHOWNORMAL)--[[Esta acción abre el archive indicado en el Item Data que se ha asignado a la varible File, nótese que por ser una variable usamos la acción file.open y no file.run]]--

Si usamos un Combobox en lugar de un ListBox el Action Script para el botón en el evento on clic sería el siguiente:

Cita:selected = ComboBox.GetSelected("ComboBox1");file = ComboBox.GetItemData("ComboBox1", selected);File.Open(file, "", SW_SHOWNORMAL)--[[La estructura de este action script es el mismo que el de un listbox, solo que las acciones de ListBox.GetSelected y ListBox.GetItemData cambian por ComboBox.GetSelected y ComboBox.GetItemData]]-

¿Cómo podria copiar una carpeta con unos archivos desde el menu que estoy creando haciendo clik en un boton a C:\Archivos de Programa y que ademas salga una barra de proceso con el porcentaje hasta ke acaba?

Código:StatusDlg.Show(MB_ICONNONE, false);--[[Está acción muestra un cuadro de dialogo con el porcentaje de progreso de las siguientes acciones]]--File.Copy("Tu directorio", "C:\\Archivo de programa\\", true, true, false, true, nil);--[[Esta acción ya la explique unos post antes]]--StatusDlg.Hide();--[[Está acción cierra y oculta el cuadro de dialogo con el porcentaje de progreso cuando la acción anterior se haya concluido, en este caso la copia de archivos]]--

Page 24: 61171041 Autoplay Media Studio Scritp

24

¿Y para una carpeta?

Código:StatusDlg.Show(MB_ICONNONE, false);Folder.Create("C:\\Archivos de programa\\El nombre de tu directorio");File.Copy("tu directorio\\*.*", "C:\\Archivos de programa\\El nombre de tu directorio", true, true, false, true, nil);StatusDlg.Hide();

¿Como crear un botón o dos botones que activen o desactiven el audio en nuestro proyecto, pero que muestren el estado del audio según sea el caso?

Explico como hacerlo de dos formas, con un solo botón en el que el texto cambiará a Audio On o Audio Off según sea el caso, y con dos botones, en el que un botón en verde con el texto Audio On alternará con un botón en Rojo con el texto Audio Off.Con un solo botón:- Tomemos en cuenta para este ejemplo el botón con nombre Button1 es quien activa y desactiva el sonido en todas nuestras páginas.- El canal de sonido usado es el de Background, si usas otros solo has el cambio de canal en la instrucción.Lo primero que haremos será inicializar una variable global que determine cuando el audio este activado o desactivado.1. En le menú Project / Actions en el evento On Starup declararemos lo siguiente:

Cita:AudioGlobal = "Audio ON"

Debo suponer que por default el audio estará activado. Por tanto esto nos indica que la variable AudioGlobal asignará el texto "Audio ON", es importante no omitir la inicialización pues de no hacerlo arrojará un error porque el valor de la variable estará vacío.2. En las propiedades de la página actual y en todas las páginas en las que coloquemos el botón de audio, colocaremos en el evento On Preload el siguiente Action Script:

Cita:Button.SetText("Button1", AudioGlobal);--[[Esta acción asigna el texto que tenga asignado la variable AudioGlobal al botón que controla el audio antes de cargar la página, esta acción es importante pues es la que pone al tanto del estado de la reproducción del sonido en las páginas, obviamente el nombre del botón puede variar]]--

3. En el botón que controlará el audio asignaremos el siguiente código en el evento On Click:

Page 25: 61171041 Autoplay Media Studio Scritp

25

Cita:Nombre = Button.GetText("Button1");--[[Esta acción asigna a la variable Nombre el texto que tiene actualmente el botón]]--if Nombre == "Audio ON" then--[[Si la variable Nombre tiene asignado el texto "Audio ON" entonces]]--Button.SetText("Button1", "Audio OFF");--[[Al botón se le asignará el texto "Audio OFF"]]--Audio.TogglePlay(CHANNEL_BACKGROUND);--[[Cambia el estado de la reproducción a pausado]]--AudioGlobal = Button.GetText("Button1");--[[A la variable AudioGlobal se le asigna el texto del botón, en este caso "Audio OFF"]]--Else--[[De lo contrario. Osea si el texto del botón en la variable Nombre es igual a "Audio OFF" ]]--Button.SetText("Button1", "Audio ON");--[[Al botón se le asignará el texto "Audio ON"]]--Audio.TogglePlay(CHANNEL_BACKGROUND);--[[Cambia el estado de la reproducción de pausado a play]]--AudioGlobal = Button.GetText("Button1");--[[A la variable AudioGlobal se le asigna el texto del botón, en este caso "Audio ON"]]--End--[[Fin del Action Script]]--

4. El anterior Action Script lo repetiremos en todos los botones de nuestras páginas que controlen el audio. .

Con dos botones

La explicación es muy similar, pero hay cambios en los códigos de los botones.- Tomemos en cuenta para este ejemplo el botón con nombre Button2 contiene el texto "Audio ON" y el botón con nombre Button3 contiene el texto "Audio OFF" en todas nuestras páginas.1. En el menú Project / Actions en el evento On Startup declararemos lo siguiente:

Cita:AudioGlobal = 1

2. En las propiedades de la página actual y en todas las página en las que coloquemos los botones de control de audio, colocaremos en el evento On Preload el siguiente Action Script:

Cita:if AudioGlobal == 1 then--[[Si la variable AudioGlobal es igual a 1, o sea el audio está activado]]--Button.SetVisible("Button2", true);--[[Muestra el botón con el texto "Audio ON" y…]]--Button.SetVisible("Button3", false);--[[Oculta el botón con el texto "Audio OFF"]]--

Page 26: 61171041 Autoplay Media Studio Scritp

26

Else--[[De lo contrario, si la variable AudioGlobal es 0, osea el audio esta desactivado…]]--Button.SetVisible("Button2", false);--[[Oculta el botón con el texto "Audio On" y…]]--Button.SetVisible("Button3", true);--[[Muestra el botón con el texto "Audio OFF"]]--End--[Fin del script]]--

3. En el botón con el texto "Audio ON" asignaremos el siguiente código:

Cita:ButtonState = Button.IsVisible("Button3");--[[A la variable ButtonState asigna el estado actual del botón con el texto "Audio OFF", si este es visible será True, si no está visible será False]]--if ButtonState == false then--[[Si la variable Button State es igual a False entonces…]]--Button.SetVisible("Button3", true);--[[Muestra el botón con el texto "Audio OFF"]]--Button.SetVisible("Button2", false);--[[Oculata el botón con el texto "Audio ON"]]--Audio.TogglePlay(CHANNEL_BACKGROUND);--[[Cambia el estado de la reproducción a pausado]]--AudioGlobal = 0;--[[A la variable global AudioGlobal asigna el valor 0 para indicar que el audio esta desactivado]]--End--[[Fin del script]]--

4. En el botón con el texto "Audio OFF" asignaremos el siguiente código, es muy similar solo hace lo contrario al de "Audio ON":Cita:ButtonState = Button.IsVisible("Button3");if ButtonState == true thenButton.SetVisible("Button3", false);Button.SetVisible("Button2", true);Audio.TogglePlay(CHANNEL_BACKGROUND);AudioGlobal = 1;end

¿Como hago que al hacer Click en un botón copie el contenido de un archivo de texto?

Ya esta, supongo que será util como para copiar seriales. La acción en este caso como siempre va en el evento On Click de un botón:

Código:Medi = TextFile.ReadToString("Prueba.txt");--[[Esta acción lee el contenido del archivo Prueba.txt y asigna el contenido a la varible Medi]]--Clipboard.CopyText(Medi);

Page 27: 61171041 Autoplay Media Studio Scritp

27

--[[Esta acción copia el contenido de la variable Medi al portapapeles, después lo podrás pegar en otro lado con Ctrl+V]]--

Cabe aclarar que para que la acción Clipboard.CopyText este disponible hay que ir a Projects / Plugin y activar Clipboard...Espero esto resuleva el problema

¿Cómo hacer una versión de prueba?

Como veo que dices tener solucionado lo del password, sólo responderé a la pregunta de como protegerlo en base a la fecha de ejecución, aunque sería más practico para evitar el posible bug de que el usuario cambie la hora, poner una restricción de un número X de ejecuciones en lugar de una restricción por X días.Este script proteje la aplicación por 30 días y después de ese tiempo la deja inoperante, obviamente deberá colocarse en el evento On Startup de la aplicación:

Código:

dias_restantes = 30;fecha_de_instalacion = Application.LoadValue("My Application", "Date Installed");tiempo_limite = 30;

fecha_de_instalacion = String.ToNumber(fecha_de_instalacion);

if fecha_de_instalacion == 0 then Application.SaveValue("My Application", "Date Installed",System.GetDate(DATE_FMT_JULIAN));else dias_restantes = (fecha_de_instalacion + tiempo_limite) -System.GetDate(DATE_FMT_JULIAN);end

if dias_restantes < 1 then Dialog.Message("Perido de prueba concluido", "El tiempo de prueba ha expirado");

Application.Exit();else Dialog.Message("Periodo de Prueba", "Te restan "..dias_restantes.." días restantes de prueba.");end