![]() ![]() ![]() | |
![]() | |
![]() | |
![]() |
Flash Player 5.
with (object
) {statement(s)
;
}
object
Instancia de un objeto o clip de película de ActionScript.
statement(s)
Acción o grupo de acciones entre llaves.
Ninguno.
Sentencia; permite especificar un objeto (por ejemplo, un clip de película) con el parámetro object
y comprobar el valor de expresiones y acciones dentro de ese objeto con el parámetro statement(s)
. Esto evita que tenga que escribir el nombre del objeto o la ruta al objeto continuamente.
El parámetro object
pasa a ser el contexto en el que se leen las propiedades, variables y funciones en el parámetro statement(s)
. Por ejemplo, si el object
es my_array
y dos de las propiedades especificadas son length
y concat
, dichas propiedades se leen automáticamente como my_array
.length
y my_array.concat
. En otro ejemplo, si el object
es state.california
, se llama a las acciones y sentencias de la acción with
desde la instancia california
.
Para averiguar el valor de un identificador del parámetro statement(s)
, ActionScript se inicia al principio de la cadena de ámbito especificada por el object
y busca el identificador en cada nivel de la cadena de ámbito, en un orden específico.
La cadena de ámbito utilizada por la acción with
para resolver identificadores comienza con el primer elemento de la lista siguiente y continúa hasta el último:
object
de la acción with
más interior.object
de la acción with
más exterior.Para establecer una variable dentro de una acción with
, la variable debe haber sido declarada fuera de la acción with
o debe introducir la ruta de acceso completa a la línea de tiempo en la que desea que resida la variable. Si establece una variable en una acción with
sin haberla declarado, la acción with
buscará el valor según la cadena de ámbito. Si la variable todavía no existe, el nuevo valor se establecerá en la línea de tiempo desde la que se llamó a la acción with
.
En Flash 5 o posterior, la acción with
sustituye a la acción tellTarget
que se eliminó. Se recomienda utilizar with
en lugar de tellTarget
debido a que es una extensión estándar de ActionScript del estándar ECMA-262. La diferencia principal entre las acciones with
y tellTarget
es que with
toma una referencia a un clip de película o a otro objeto como parámetro, mientras que tellTarget
toma una cadena de ruta de destino que identifica un clip de película como su parámetro y no se puede utilizar para especificar el destino de objetos.
En el ejemplo siguiente se establecen las propiedades _x
e _y
de la instancia someOther_mc
y se indica a someOther_mc
que vaya al fotograma 3 y se detenga.
with (someOther_mc) { _x = 50; _y = 100; gotoAndStop(3); }
El siguiente fragmento de código muestra cómo escribir el código anterior sin utilizar una acción with
.
someOther_mc._x = 50; someOther_mc._y = 100; someOther_mc.gotoAndStop(3);
También podría escribir este código mediante la acción tellTarget
. Sin embargo, si someOther_mc
no fuera un clip de película, sino un objeto, no podría utilizar la acción with
.
tellTarget ("someOther_mc") { _x = 50; _y = 100; gotoAndStop(3); }
La acción with
es útil para acceder a varios elementos de una lista de cadena de ámbito simultáneamente. En el ejemplo siguiente, el objeto incorporado Math
se sitúa al frente de la cadena de ámbito. Si se establece Math
como valor predeterminado, el objeto resuelve los identificadores cos
, sin
y PI
en los valores Math.cos
, Math.sin
y Math.PI
, respectivamente. Los identificadores a
, x
, y
y r
no son métodos ni propiedades del objeto Math
, pero como existen en el ámbito de activación de objeto de la función polar()
, se resuelven en las variables locales correspondientes.
function polar(r) { var a, x, y; with (Math) { a = PI * r * r; x = r * cos(PI); y = r * sin(PI/2); } trace("area = " +a); trace("x = " + x); trace("y = " + y); }
Puede utilizar acciones with
anidadas para acceder a la información en varios ámbitos. En el ejemplo siguiente, la instancia fresno
y la instancia salinas
son instancias secundarias de la instancia california
. La sentencia establece los valores _alpha
de fresno
y salinas
sin cambiar el valor _alpha
de california
.
with (california){ with (fresno){ _alpha = 20; } with (salinas){ _alpha = 40; } }
![]() | |
![]() | |
![]() | |
![]() ![]() ![]() |