Sobre scripts y acciones de fotogramas

Hola Bede. Tengo unos sprites (el mismo miembro) con un behaviour donde les adjudico un member concreto y una opacidad concreta. Luego surgió la cuestión de que deberían aparecer en transparente e ir haciéndose opacos hasta la opacidad deseada.Lo hice con keyframes, pero no resultó. Lo hice con un script de fotograma, pero tampoco resultó. Me imagino que es porque tiene preferencia un behaviour aplicado al sprite que un script de fotograma... ¿Cómo lo puedo solucionar? Muchas gracias, como siempre. Juan

1 Respuesta

Respuesta
1
Esto es justo lo que buscas. Es un behaviour y debes vinculalo al miembro que dices y rellenar los parámetros que se te piden:
--Creado por bedelludrica
property p_sprite,p_tranparencia,\
p_transparencia_min, p_vel_transparencia
--property p_transparencia_inicial
on getPropertyDescriptionList
set lista = [:]
--addProp lista, #p_transparencia_inicial,\
-- [#default: 5, #format:#integer, #comment: \
-- "cual quiere que sea la transparencia inicial",\
-- #range: [#min:70, #max:100]]
addProp lista, #p_transparencia_min, \
[#default: 60, #format:#integer, #comment: \
"cual quieres que sea la minima transparencia",\
#range: [#min:0, #max:99]]
addProp lista, # p_vel_transparencia,\
[#default: 5, #format:#integer, #comment: \
"velocidad de cambio de transparencia", \
#range: [#min:1, #max:5]]
return lista
end
on beginsprite me
p_sprite = sprite(me.spritenum)
p_tranparencia = p_sprite.blend
end
on exitframe me
p_tranparencia = p_sprite.blend
if rollover(me.spritenum) then
if p_tranparencia > p_transparencia_min then
p_sprite.blend= \
p_tranparencia - p_vel_transparencia
end if
else
if p_tranparencia <= 100 - p_vel_transparencia then
p_sprite.blend=\
p_tranparencia + p_vel_transparencia
end if
end if
end
on getBehaviorTooltip me
return \
"Este comportamiento debes lanzarlo a un objeto que quieres que tenga un efecto de transparencia al entrar el ratón" & \
No me expliqué bien: Se trata de una presentación de pintura, con diferentes partes. Cada una tiene unos botones, cada uno de los cuales representa un cuadro.El comportamiento que hice, adjudica a cada uno de los botones una imagen de icono y luego una imagen de cuadro.La transparencia está al 50. Al pasar por encima de cada uno de ellos se pone a 100. Al pulsar, aparece el cuadro. Al cambiar de parte, quiero que vayan desapareciendo, para que aparezcan otros botones para otros tipos de cuadros. Verás, supongo que se solucionaría utilizando para cada botón un sprite cuyo miembro original sea el miembro del botón.Yo utilicé un mismo miembro inicial para todos los botones, y cambiaba el miembro con un comportamiento...
Me imagino que es esto:
--Creado por bedelludrica
property p_sprite,p_tranparencia,p_cam,i
on getPropertyDescriptionList
set lista = [:]
addProp lista, #p_cam,\
[#default: "", #format:#graphic, #comment: "escoge el miembro que se cambia al pulsar"]
addProp lista, #i,\
[ #format:#integer, #comment:"excribe el sprite que cambias",#default:1]
return lista
end
on beginsprite me
p_sprite = sprite(me.spritenum)
p_sprite.blend =50
end
on exitframe me
if rollover(me.spritenum) then
if p_sprite.blend < 100 then p_sprite.blend= p_sprite.blend + 5
else
if p_sprite.blend>50 then p_sprite.blend=p_sprite.blend - 5
end if
end
on mousedown me
sprite(i).member= p_cam
end
Esa parte ya la había conseguido, pero lo que no me funcionaba era el que se fueran haciendo opacos los botones hasta hacerse transparentes, para pasar a otra parte.Del mismo modo, al entrar en esa parte, deberían ir apareciendo, de 0 a 50.
¿Cómo?. Es que me cuesta ver la idea así con palabras
Supón, que eres pintor, y catalogas tus obras por tipos, y ademas de la galería, tienes una biografía, y una parte de contactos, etc. Estas en biografía, y pasas a una parte de galería. Pues ahí está el temita: cada parte de la galería tiene sus botones de cuadros, y quiero que aparezcan de 0 a 50. Del mismo modo, quiero que si vuelves a ir a la biografía, estos botones o los que haya, vayan desapareciendo de 0 a 50. Haciendo keyframes no funcionan, y con script de fotograma tampoco...
Joder muchas gracias por tu paciencia, Bede.
Creo que es esto:
--Creado por bedelludrica
property p_sprite,p_tranparencia,p_cam,is,numero
property p_vel_transparencia,p_vel_transparencia2,p_lista_sprites
property i, p_entro, p_salgo
on getPropertyDescriptionList
set lista = [:]
addProp lista, # p_vel_transparencia,\
[#default: 5, #format:#integer, #comment: \
"velocidad de cambio de transparencia al pasar el raton sobre el", \
#range: [#min:1, #max:5]]
addProp lista, # p_vel_transparencia2,\
[#default: 2, #format:#integer, #comment: \
"velocidad de cambio de transparencia en las entradas y salidas de sprite", \
#range: [#min:1, #max:5]]
addProp lista, #p_lista_sprites, [#comment: "lista de sprites",\
#format: #list, #default: [1,3]]
addProp lista, #numero, [#comment: "cual es el primer sprite que aparece??",\
#format: #list, #default: 1]
return lista
end
on beginsprite me
p_sprite = sprite(me.spritenum)
repeat with i in p_lista_sprites
if i <> numero then
sprite(i).visible =0
else
sprite(i).blend =0
p_entro=1
sprite(i).visible =1
end if
end repeat
me.inicio()
end
on exitframe me
if p_entro=1 then
me.inicio()
else if p_salgo=1 then
me.fin()
else if rollover(me.spritenum) and p_entro=0 then
if p_sprite.blend < 100 then p_sprite.blend= p_sprite.blend + p_vel_transparencia
else if p_sprite.blend>50 then p_sprite.blend=p_sprite.blend - p_vel_transparencia
end if
end
on cambioini me
p_entro=1
sendSprite(me.spriteNum ,#encendido)
end
on cambiofini me
p_salgo=1
repeat with i in p_lista_sprites
if i = me.spriteNum then
p_salgo=1
end if
end repeat
end
on apagado me
p_salgo=1
--sprite(me.spriteNum).visible = FALSE
end
on apagado2 me
sprite(me.spriteNum).visible = FALSE
end
on encendido me
sprite(me.spriteNum).visible = 1
end
on inicio me
h=sprite(me.spritenum).blend
h= h+p_vel_transparencia2
sprite(me.spritenum).blend=h
if sprite(me.spritenum).blend>=50 then p_entro=0
end
on endsprite me
p_salgo=1
end
on fin me
h=sprite(me.spritenum).blend
h= h-p_vel_transparencia2
sprite(me.spritenum).blend=h
if sprite(me.spritenum).blend<=5 then
p_salgo=0
sprite(me.spritenum).visible=0
end if
end
Un ejemplo sería por ejempñlo con tres elementos:
----
on mouseup me
sendsprite(3,#cambiofini)
sendsprite(5,#cambiofini)
sendsprite(1,#cambioini)
end
-------------
on mouseup me
sendsprite(5,#cambiofini)
sendsprite(1,#cambiofini)
sendsprite(3,#cambioini)
end
-----
on mouseup me
sendsprite(5,#cambioini)
sendsprite(1,#cambiofini)
sendsprite(3,#cambiofini)
end
Mejor dame tu email y te lo mando
No, no es necesario, con un poquito de lomio y lo tuyo, me voy a apañar, ya lo he conseguido prácticamente. Muchas gracias por todo, como siempre, el mejor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas