Portada | Monotemáticos | Secciones | Comunidad | Servicios profesionales | RSS
Teoría del diseño | Vídeo e Imagen | CD/DVD Interactivo | Audio | Web Multimedia | Fotografía | Tecnología
Directorio | Manuales | FAQs | Programas | Noticias
Registrarse
Desarrollo Multimedia

Scripting Scope o Ámbito de Scripting

Hay dos tipos de ámbitos para el scripting, procedure-level y class-level. Se puede acceder a ellos usando las pestañas Procedure View y Class View, respectivamente, en el Scripting Editor.

Procedure

Procedure-Level Scope o Ámbito Procedure-level

Este es el ámbito mas usado, ya que en el puedes usar diferentes scripts para cada acción. El código que introduces equivale al cuerpo de una función. Por ejemplo, si has definido una acción Tile Hit para una determinada tile(baldosa), el código usado sería este:

Function [FunctionName]()
    El código de Procedure-level va aquí
End Function

Debido a que Platform Studio crea automáticamente las líneas de código Function...End Function, podrás ver que el código de procedure-level es equivalente al cuerpo de una función o sub-función.

Ahora, pongamos en el caso de que creas un script para el trigger "Value Changed" del marcador de puntuaciones. En ese caso, el código de tu función sería el siguiente,

Function [FunctionName](ByVal curCounter As _
    PlatformStudio.CurrentCounter)
    ‘El código de Procedure-level va aquí
End Function

El código que escribirías en esta función sería el mismo que el del ejemplo anterior, ya que solo estas definiendo el cuerpo de la función sin modificar ningún otro valor. Sin embargo, en esta función, también puedes usar un parámetro, curCounter. Aunque no declares curCounter, puedes hacer uso de el ya que Platform Studio lo declarará por ti.

Una ultima anotación sobre el ámbito procedure-level: no podrás ejecutar las funciones de otros triggers ya que estas son independientes unas de otras. Si quieres compartir código, deberás introducirlo en Class View.

Class-level Scope o Ámbito de Class-level


El segundo tipo de ámbito es el de Class-level. En class-level, puedes escribir código global que podrá ser usado en cualquier procedure (procedimiento) de tu juego. Todo esto código se localiza en una clase (cuya definición es creada automáticamente por Platform Studio). Por lo tanto, si introduces lo siguiente,

Dim Game As PlatformStudio.psGame

Platform Studio creará esto (aunque no lo veas en Class View),

Class ScriptObject
    Dim Game As PlatformStudio.psGame
End Class

El Objeto Game (Game Object) también podra ser usado en los procedures (procedimientos) que uses en Procedure View.

Otra forma de aprovechar el scripting de class level es creando funciones globales. Por ejemplo, si creas una función que dibuja el número de puntos conseguidos cuando el jugador consigue una moneda o un corazón, podrás acceder a ella tanto desde el trigger Coin.Collect como desde el trigger Heart.Collect.

Combinándolo todo


El resultado final es una librería DLL creada por Platform Studio, que combina todos tus scripts, acciones y código global y lo coloca todo un una sola clase, para ser compilado en un archivo DLL. Si se produce un error al compilar el DLL, veras el código fuente que Platform Studio genera para tus acciones y código. Para que vayas familiarizándote con el, aquí tienes una muestra de código al que tu DLL se debería parecer:

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.VisualBasic

Namespace Script
    Class ScriptObject
        'Este código importa los objetos del juego 
        'así que puede ser usado a través de scripting.
        'El Game object és concretado por el jugador.
        Public Game As PlatformStudio.IGame

        'Trigger actions
        '---------------
        Function cval2(ByVal curCounter As PlatformStudio.CurrentCounter)
            If curCounter.Value < 0 Then
                Game.QuitGame()
            End If
        End Function

        Function cval3(ByVal curCounter As PlatformStudio.CurrentCounter)
            If curCounter.Value <= 0 Then
                Game.ModifyLives(-1)
                Game.SetHealth(3)
            Else
                If curCounter.Decreased Then
                    Game.Hurt(4, "Blink", 0.2)
                End If
            End If
        End Function

        Function khol37()
            Game.MoveCharacter("Left", 4, True)
        End Function

        Function khol39()
            Game.MoveCharacter("Right", 4, True)
        End Function

        Function khol38()
            Game.Jump(0.6, 0.25, 1)
        End Function

        Function krel38()
            Game.StopJumping()
        End Function

        Function kpre27()
            Game.QuitGame()
        End Function
    End Class
End Namespace


Indice de Manual Platform Studio

 Autoría, licencia y acciones sobre este artículo

Informe de Rubén Lapuerta*
Colaborador Desarrollo Multimedia
URL: http://www.desarrollomultimedia.es

Atención: Contenido exclusivo de DesarrolloMultimedia.es. No reproducir. Copyright.

Añadir un comentario al artículo Publicar un comentario del artículo


Comentarios de los visitantes

Aun no hemos recibido comentarios de este artículo.
Puedes ser el primero en enviar tu comentario.

Añadir un comentario al artículo Publicar un comentario del artículo






  Ir arriba


DesarrolloMultimedia.es | Copyright | Anunciese | Acerca de | Datos legales | Contacta