Cómo usar setproperty para cambiar tamaño de un movieclip
3 seguidores
hola,
alguien sabría como hacer para poder cambiar alternativamente de tamaño un movieclip? tengo que hacer un trabajo y estoy utilizando este código pero el movieclip se queda igual. la idea es que se mueva por la escena cambiando de tamaño. este es el ejemplo que puso el profe y funciona en su película pero no en la mía.
<code>altura_actual = getProperty ("mariposita10", _height);
anchura_actual = getProperty ("mariposita10", _width);
if (altura_actual < 200)
altura_actual = 30;
if (anchura_actual < 200)
anchura_actual = 30;
setProperty("mariposita10", _height, altura_actual + 2);
setProperty("mariposita10", _width, anchura_actual + 2);</code>
gracias,
elsuricatorojo
Sobre la suma no creo que te pueda ayudar mucho en la parte servidor. Vas a tener que utilizar alguna clase que haga la comunicación con el php. Mirate LoadVars http://livedocs.adobe.com/flash/8/main/00002323.html. Utiliza el método sendAndLoad. En el objeto LoadVars del "send" manda por POST los dos valores. Que los reciba el php haga el calculo (pide ayuda en Programacion Servidor) y lo devuelva.
Lo dicho, tiros van por utilizar el método senAndLoad() de la clase LoadVars.
anabel_lee
jo, muchísimas gracias, santa máquina que eres.
ahora si que funciona. Con esto creo que ya tengo un 8...., te lo juro que no es broma. tengo que hacer dos prácticas para poder aprobar la asignatura del master que es casi todo programación y estoy sufriendo...
por cierto, para poder sacar un nueve no tendrás idea de como hacer una suma en flash, enviarla al servidor y con php se procese y devuelva el resultado en la escena 2 de la película anterior...
bueno, de todas formas, muchas muchas gracias
elsuricatorojo
Ok. Por lo tanto tienes elementos que con animación basada en timeline que requieren que tengas 90 frames. Lo que puedes hacer es meter la programación de mariposa 10 dentro del movieclip de la mariposa10.
Lo que yo te recomiendo es:
0) En la linea de tiempo de 90 frames borra la programación que actuaba sobre mariposa10.
2) Selecciona la instancia de mariposa10 y haz dobre clip sobre ella de tal forma que edites en contexto el clip de librería de mariposa10. Mete esta programación (dejala en 1 solo frame):
<code>
this.onEnterFrame=function(){
this._width=this._width+5
this._height=this._height+5
}
</code>
Si te fijas ya no estamos atacando a las propiedades de mariposa10. Eso tiene sentido si metemos esa programación al nivel donde esté presente mariposa10. Como se la estamos metiendo a la propia mariposa10 sutituimos la referencia de "mariposa10" por "this" que viene a sigificar algo como "a mi mismo".
Una cosa IMPORTANTE. Al hacer esto todas las instancias del clip de libreria que has utilizado para mariposa10 se moverán. Es decir, si del mismo clip de librería has sacado las instancias "mariposa1" -> "mariposa10" las 10 se moverán. Para que solo se mueva la 10 duplica ese clip de librería de tal forma que tengas 2 mariposas. Una (sin programación) la utilizas para las que no se muevan y otra, la nueva con la programación la utilizas para la mariposa10.
anabel_lee
jo, genial,
el código que me has enviado funciona genial...el problema es que funciona en una película flash a parte. pero no en la mía.
En la escena que yo tengo es de 90 frames, tiene que haber una nube que se mueve por interpolación de movimiento, la incrustración de un vídeo, tres intancias de la mariposa por duplicatemovieclip, una música y claro, hay un stop,´y encima la mariposa que se hace grande. y no me funciona, supongo que es porque hay un stop pero no lo se.
si sabes de alguna forma y si no pues muchas gracias de todas formas.
un saludo
elsuricatorojo
Si lo que quieres es animar por programación no necesitas mas que 1 solo frame. Te pongo un ejemplo para animar la "mariposa10":
Esta mueve la mariposa hacia la derecha:
<code>
this.onEnterFrame=function(){
mariposa10._x=mariposa10._x+5
}
</code>
Esta hace la mariposa cada vez mas grande por, posiblemente, distorsionandola:
<code>
this.onEnterFrame=function(){
mariposa10._width=mariposa10._width+5
mariposa10._height=mariposa10._height+5
}
</code>
Esta hace la mariposa cada vez mas grande sin distorsionarla:
<code>
this.onEnterFrame=function(){
mariposa10._xscale=mariposa10._xscale+5
mariposa10._yscale=mariposa10._yscale+5
}
</code>
Esta hace lo que yo creo que tu profe queria hacer que es agrandar la mariposa mientras que tenga una tamaño menor de 200px:
<code>
this.onEnterFrame=function(){
if(mariposa10._width<200){
mariposa10._width=mariposa10._width+5
}
if(mariposa10._height<200){
mariposa10._height=mariposa10._height+5
}
}
</code>
El código que has puesto podría empezar a funcionar si tienes una escena con 2 frames y sin un stop de tal forma que la cabeza reproductora entre en bucle entre los frames 1 y 2... pero tendrías que retocarlo un poco y poner solo esto:
<code>
if(mariposa10._width<200){
mariposa10._width=mariposa10._width+5
}
if(mariposa10._height<200){
mariposa10._height=mariposa10._height+5
}
</code>
anabel_lee
acabo de ver el código, lo he aplicado y no funciona, debo estar poniendo algo mal. En realidad el código es para que una mariposa que esté por la escena y vaya cambiando de tamaño al mismo tiempo. No se si el código hay que aplicarlo al mismo clip de película, al fotograma 1 o al fotograma 90 que es donde acaba la escena.
puede influir el tamaño actual que tenga la mariposa y no sea proporcional a lo que pongo en el código?
es que no tengo ni idea de actionscript. Me han mandado este ejercicio y llevo no se cuantas horas con él porque a la mariposita no se le antoja hacerse grande...
elsuricatorojo
Dile al profe que ya es hora de actualizarse :-)
PD: Por lo menos no utiliza telltarget
ventdaval
Hola,
el setProperty esta ya mas que deprecado... es de hace unos 5 años ^^
Aun asi, no entiendo bien que se supone que debe hacer tu codigo, pero te lo traduzco a AS1/AS2:
<code>var altura_actual =mariposita10._height;
var anchura_actual = mariposita10._width;
if (altura_actual < 200)
altura_actual = 30;
if (anchura_actual < 200)
anchura_actual = 30;
mariposita10._height=altura_actual +2
mariposita10._width=anchura_actual + 2</code>
Saludos...