Page 1 of 2

zoom wanted

Posted: Tue Jul 16, 2013 8:29 pm
by stefff285
hi all i am remaking some script and this is a long time
i didn't touch hollywood

i would like to simply zoom an image for the moment
but i canno't

here is the code

Code: Select all

@SCREEN {Mode = "FullScreen", Width = 320, Height = 256}
@brush 1, "logo01.png"
@brush 2, "logo02.png"

x = 1
y = 1

Function p_scale()
    For x = 1 to 800
    x = x + 2    
    y = y + 2
    ScaleBrush(1, x, y )
    DisplayBrush(1, 0, 0 )
    Next
EndFunction

p_scale()

Repeat 
    WaitEvent
Forever
any help will be great

regards

steff

Re: zoom wanted

Posted: Wed Jul 17, 2013 12:59 pm
by ArtBlink
Ok, j'explique

Déjà ta boucle est mauvaise, car elle va de 2 en 2 et tu part de 1 à 800, alors que déjà, tu dois soit aller de 1 à 799, soit 1 à 801

Tu passe par des brosses sans utiliser le double buffer en hard (sa doit ramer sévère)

Ensuite, ou est l'accroche de ta brosse?! à droite, au centre...

Pour un effet de zoom, il faut prendre une accroche au centre de l'image pour ensuite faire un zoom.

Ton displaybrush doit donc être au centre :

DisplayBrush(1, #CENTER, #CENTER )

Sa doit être sa si je dis pas de bêtise

Ton format d'écran n'est pas bon en full screen, n'oubli pas que t'es pu sur ECS/OCS/AGA don tes résolutions "Amiga" ne sont plus bonnes surtout en plein écran. Utilise 320x200 à la place des 320x256 (Résolution de PCul maintenant, fini l'exception ... Snif)

Attention à l'appel de function via setinterval, ne jamais mettre les parenthèse
Le set interval permet d'exécuter ta function selon un certain IPS Maxi (ou FPS Maxi)

Attention, la tu ZOOM, si tu faisait l'effet inverse, il ne faut pas oublier d'effacer l'écran sinon sa va faire sale tu fais que les anciennes images plus grandes resterons. La, tu agrandi ton image, donc pas de souci, car l'image précédente sera toujours plus petite que l'image suivante, elle s'écrase au fur et a mesure ;-)

AnchorX et AnchorY te serve pour l'accroche.

Bon, essai se code et tiens moi au courant ;-)


@SCREEN {Mode = "FullScreen", Width = 320, Height = 200}
@BRUSH 1, "logo01.png"
@BRUSH 2, "logo02.png"

x = 1
y = 1

Function p_scale()
FLIP
For x = 1 to 801
x = x + 2
y = y + 2
ScaleBrush(1, x, y )
DisplayBrush(1,#CENTER,#CENTER,{AnchorX = 0.5, AnchorY = 0.5})
EndFunction

SETINTERVAL (1,p_scale,20)
BEGINDOUBLEBUFFER

Repeat
WaitEvent
Forever

Re: zoom wanted

Posted: Wed Jul 17, 2013 1:34 pm
by stefff285
coucou oui il y a plein de choses que je savais pas :)

mais sinon la fonction n'est point reconnue ???

pas de fonction pour endfunction me dit il

bref merci d'avance et grand merci encore

je vais voir ca ce soir

steff

Re: zoom wanted

Posted: Wed Jul 17, 2013 11:22 pm
by ArtBlink
Il manquait le NEXT espèce de bourricot lol... Le code doit être bon maintenant

Mais évite la boucle, comme le code se répète, enlève la boucle FOR et le next qui ne servent à rien

et ajoute :

If x>320 then X=320
If Y>200 then Y=200

N'oulie pas le ratio de ton écran pour un jolie zoom, en 320x200, le ratio est de 1.6 car 320/200=1.6, en gros:

X=X+2
Y=(Y+2)/1.6

voici le code selon l'ancien:

@SCREEN {Mode = "FullScreen", Width = 320, Height = 200}
@BRUSH 1, "logo01.png"
@BRUSH 2, "logo02.png"

x = 1
y = 1

Function p_scale()
FLIP
x = x + 2
y = y + 2
If x>320 then X=320
If Y>200 then Y=200
ScaleBrush(1, x, y )
DisplayBrush(1,#CENTER,#CENTER,{AnchorX = 0.5, AnchorY = 0.5})
EndFunction

SETINTERVAL (1,p_scale,20)
BEGINDOUBLEBUFFER

Repeat
WaitEvent
Forever

Voici le code mieux approprié :


@SCREEN {Mode = "FullScreen", Width = 320, Height = 200}
@BRUSH 1, "logo01.png"
@BRUSH 2, "logo02.png"

x = 1
y = 1

Function p_scale()
FLIP
For x = 1 to 801
x = x + 2
Y=(Y+2)/1.6
ScaleBrush(1, x, y )
DisplayBrush(1,#CENTER,#CENTER,{AnchorX = 0.5, AnchorY = 0.5})
next
EndFunction

SETINTERVAL (1,p_scale,20)
BEGINDOUBLEBUFFER

Repeat
WaitEvent
Forever

Re: zoom wanted

Posted: Thu Jul 18, 2013 1:13 pm
by ArtBlink
Tester, bug dans scalebrush

Essai plutôt sa :
@DISPLAY {Width = 320, Height = 200}

@BRUSH 1, "logo01.png"

x = 1
y = 1

Function scale()
flip
x = x + 2
y=(y+2)/1.6
if x>8 then x=8
If y>5 then y=5
DisplayBrush(1,160,100,{AnchorX = 0.5, AnchorY = 0.5,scaleX=x,scaleY=y})
EndFunction

SETINTERVAL (1,scale,20)
begindoublebuffer

Repeat
WaitEvent
Forever

Re: zoom wanted

Posted: Thu Jul 18, 2013 5:13 pm
by stefff285
coucou artblink ! meci pour ton aide déjà :)))

et bé ca marche pas et ca risque de ramer sévère

en fait ca fait deux carrés de couleurs , un en bas a droite
de l'ecran et après deux secondes zou ca devient une seule
surface

aurais tu sous la main un script de starfield ?

ca serait super, des dots qui bougent pour un effet qui ne
prendrait pas trop de temps

merci a toi et bonjour a tarzin si il nous lit

a très vite

steff

Re: zoom wanted

Posted: Thu Jul 18, 2013 7:29 pm
by ArtBlink
t'as pas de zoom?!

Il y a rien qui s'affiche dans la fenêtre?????

Tu m'étonne là?!

Re: zoom wanted

Posted: Thu Jul 18, 2013 8:49 pm
by stefff285
cocou non pas de zoom

bref merci de tout coeur on va y arriver pardon
humhum grace a toi on va y arriver !

Re: zoom wanted

Posted: Thu Jul 18, 2013 9:11 pm
by ArtBlink
Attention, c'est peux être que c'est trop rapide
Joue avec la valeur de VitesseZoom pour choisir la vitesse ;-)

Pour dézoomer on verra plus tard :-p

Code: Select all

@display {Width = 320, Height = 200}
@brush 1, "logo1.png"

x = 1
y = 1
VitesseZoom=0.02
Function scale()
flip
x = x + VitesseZoom 
y=(y+VitesseZoom/1.6)
if x>16 then x=16 
If y>10 then y=10 
DisplayBrush(1,160,100,{AnchorX = 0.5, AnchorY = 0.5,scaleX=x,scaleY=y}) 
EndFunction

SETINTERVAL (1,scale,20)
begindoublebuffer

Repeat 
WaitEvent
Forever

Re: zoom wanted

Posted: Thu Jul 18, 2013 9:57 pm
by ArtBlink
Et on peux même faire un rotozoom ;-)

Si le code fonctionne, je te fais un cours lol

Zoom in/out + rotozoom et même un déplacement de l'objet

Pour le starfield, il existe plusieurs façon

Le pixel... mmmmmhhh, c'est bon le pixel, ou la brosse

tu peux me contacter et m'envoyer tes scripts sur :

artblink.hollywoodATfree.fr

AT=@

Je pourrais te filais un vrai coup de main si j'avais toutes tes sources ;-)

et par mail c'est plus simple