Director: zoom e pan immagini

Di: fraciatta | 26/09/2020 17:09:43
salve a tutti,
ho gia scritto in diversi forum ma nn ho ancora trovato nessuno che mi sappia aiutare...
sto cercando di creare un cd multimediale contentente delle tavole architettoniche abbastanza grandi (3000x1500) rispetto allo stage (1024x768), quindi bisogno di qualcosa che mi permetta di effettuare degli zoom avanti e indietro e un pan (con trascinamento del cursore del muose sull' immagine)...vi premetto che nn conosco molto bene il linguaggio lingo e riesco male a pena a modificare gli scrip che trovo nelle discussioni on line... :)
Tuttavia navigando ho trovato uno script (che in realtà sono tre behavior) molto adatto al mio caso infatti permette di zoommare e trascinare l'immagine (ALLEGATO IN FONDO).
Testandolo personalmente l' ho trovato molto azzeccato, solamente che ha un grande difetto ke ora vi spiego :)...
il difetto è che ogni volta che clicco sul pulsante zoom (sia in che out) e ogni volta che clicco con il muose sull' immagine ingrandita per tracinarla l'immagine ingrandita si riposiziona sempre al centrata rispetto alla finestra di navigazione cosa che rende la navigazione dell' immagine molto scomoda ... (è piu facile a vederlo che a spiegarlo :) )
qualcuno saprebbe aiutarmi per trovare una soluzione a questo problema ... gliene sarei eternamente grata!
ECCO QUI GLI SCRIPT
i primi due sono da assegnare ai tasti zoom io di solito utilizzo due rettangolini
on mouseUp me
sendAllSprites(#zoomIn)
end
on mouseUp me
sendAllSprites(#zoomIn)
end

MENTRE QUESTO PIU CORPOSO è DA APPLICARE ALLA FINESTRA DI NAVIGAZIONE (di solito utilizzo la tavola alle dimensioni di zoom 100% in modo che entri nello stage) poi lo script in automatico chiede il collegamento all' immagine più grande anchessa da inserire nel cast ...
-- ZOOM IMAGE --
--
----------------------------------------------------------------------
--
----------------------------------------------------------------------
-- PROPERTY DECLARATIONS --
property sourceMember -- member containing high-resolution image
property zoomFactor -- amount to zoom for each step
property bgColor -- color used to fill blank areas
property pSprite -- sprite to which this behavior is attached
property pImage -- image of the member of this sprite
property pRect -- rect of pImage
property pSourceRect -- rect of sourceMember
property pSourceWidth -- width of sourceMember
property pSourceHeight -- height of sourceMember
property pTargetWidth -- width of this sprite
property pTargetHeight -- height of this sprite
property pMinScale -- scale at which picture just reaches edges
property pScale -- current scale of the image
property pStartLocH
property pStartLocV
-- EVENT HANDLERS --
on beginSprite(me)
me.mInitialize()
end beginSprite
on mouseDown(me)
pStartLocH = the mouseH
pStartLocV = the mouseV
if not (the actorList).getPos(me) then
(the actorList).append(me)
end if
end mouseDown
on stepFrame(me) -----------------------------------------------------
-- SOURCE: Received while the mouse is held down over this sprite
-- ACTION:
--------------------------------------------------------------------
if the mouseUp then
(the actorList).deleteOne(me)
exit
end if
vOffsetH = 5 * the mouseH - 5*pStartLocH --qui bisogna agire per aumentare il potere di pan
vOffsetV = 5 * the mouseV - 5*pStartLocV
me.mRedraw(vOffsetH, vOffsetV)
end stepFrame
-- PUBLIC METHODS --
on ZoomIn(me) --------------------------------------------------------
pScale = pScale * zoomFactor
if pScale > 1 then
pScale = 1
end if
me.mRedraw()
end ZoomIn
on ZoomOut(me) -------------------------------------------------------
-- ACTION: Redraws the picture at a lower magnification
--------------------------------------------------------------------
pScale = pScale / zoomFactor
if pScale < pMinScale then
pScale = pMinScale
end if
me.mRedraw()
end ZoomOut
-- PRIVATE METHODS --
on mInitialize(me) ---------------------------------------------------
-- SOURCE: Sent by new()
-- ACTION: Displays the source image at its lowes magnification,
-- and prepares the properties required for zooming
--------------------------------------------------------------------
pSprite = sprite(me.spriteNum)
pRect = pSprite.rect
pRect = pRect.offset(pRect.left, pRect.top)
pTargetWidth = pRect.width
pTargetHeight = pRect.height
vImage = sourceMember.image
vDepth = vImage.depth
vPalette = vImage.paletteRef
pImage = image(pTargetWidth, pTargetHeight, vDepth, vPalette)
pSprite.member.image = pImage
pImage = pSprite.member.image
pSourceRect = sourceMember.rect
pSourceWidth = pSourceRect.width
pSourceHeight = pSourceRect.height
pMinScale = float(pTargetWidth) / pSourceWidth
vTemp = float(pTargetHeight) / pSourceHeight
if pMinScale > vTemp then
pMinScale = vTemp
end if
pScale = pMinScale
me.mRedraw()
end mInitialize
on mRedraw(me, aOffsetH, aOffsetV) -----------------------------------
-- SOURCE: Sent by new(), ZoomIn(), ZoomOut() and stepFrame()
-- ACTION: Displays the source image at its current magnification
--------------------------------------------------------------------
-- Horizontal
if voidP(aOffsetH) then
aOffsetH = 0
end if
vWidth = pSourceWidth * pScale
vLeft = (pTargetWidth - vWidth) / 2
vTemp = 0.22* vLeft + aOffsetH
if vWidth < pTargetWidth then
vRight = vLeft + vWidth --QUI DEVI AUMENTARE IL VALO N* vLeft per aumentare il raggio di scroll
else
if vTemp > 0 then
vLeft = 0
else
vLeft = vTemp
end if
vRight = vLeft + vWidth
if vRight < pTargetWidth then
vRight = pTargetWidth
vLeft = pTargetWidth - vWidth
end if
end if
-- Vertical
if voidP(aOffsetV) then
aOffsetV = 0
end if
vHeight = pSourceHeight * pScale
vTop = (pTargetHeight - vHeight) / 2
vTemp = vTop + aOffsetV
if vHeight < pTargetHeight then
vBottom = vTop + vHeight --QUI DEVI AUMENTARE IL VALO N* vLeft per aumentare il raggio di scroll
else
if vTemp > 0 then
vTop = 0
else
vTop = vTemp
end if
vBottom = vTop + vHeight
if vBottom < pTargetHeight then
vBottom = pTargetHeight
vTop = pTargetHeight - vHeight
end if
end if
-- CopyPixels
vTargetRect = rect(vLeft, vTop, vRight, vBottom)
pImage.fill(pRect, bgColor)
pImage.copyPixels(sourceMember.image, vTargetRect, pSourceRect)
end mRedraw
-- BEHAVIOR PARAMETERS --
on getPropertyDescriptionList(me)
vPropertyList = [:]
vPropertyList[ \
#sourceMember] = [ \
#comment: "Source member", \
#format: #bitmap, \
#default: member(1)]
vPropertyList[ \
#zoomFactor] = [ \
#comment: "Zoom factor", \
#format: #float, \
#range: [#min: 1.0, #max: 2.0], \
#default: 1.5]
vPropertyList[ \
#bgColor] = [ \
#comment: "Background color", \
#format: #color, \
#default: rgb(255, 255, 255)]
return vPropertyList
end getPropertyDescriptionList

Risposte


Re: Director: zoom e pan immagini

Ciao, purtroppo non ho avuto il tempo per leggere il codice,
però potrebbe convenirti usare un sistema di zoom e navigatore di flash (che puoi usare in Director).
Vedi qua: http://www.yofla.com/flash/flash-zoomer/

Di: Anonimo | 26/09/2020 17:10:43

Re: Director: zoom e pan immagini

grazie per la tempestiva risposta ...
ho dato un occhiata al risultato presente sul sito ed è interessante ...
incomincerò con l'istallare per la prima volta adobe flash visto che nn lo conosco se non per sentito dire :) (altrimenti non riuscirei a cambiare i bottoni ecc perche avrei bisogno di layout differente)...
nn vorrei approfittare della tua esperienza ma purtroppo mi sto avvicinando adesso a questi software ...
cmq lo script che ti ho postato sopra sarebbe veramente ben fatto (salvo quel problema) in quanto consente gestire tutto in ambiente director e la sua interfaccia è molto intuitiva ...
(sicuramente è un po meno "articolato" di quello che mi hai consigliato tu)
infine nn ti nascondo che utilizzare quel tipo di behavoir (in lingo) per la mia limitata esperienza sarebbe di gran lunga più adatto...

Di: fraciatta | 26/09/2020 17:10:43

Re: Director: zoom e pan immagini

ciao di nuovo oramai ho familiarizzato con quello che mi hai consiglaito tu su flash ...
ora ho l'image zoomer (in flash) importato come riferimento in director e fin qui tutto bene ...
il mio quesito è questo:
quando tento di far leggere il mio movie di director (che devo masterizzare in un CD) in un altro computer, l'altro computer deve avere per forza installato flash player ?? (credo di si) e se non lo avesse installato???
Mi chiedevo se esistesse una maniera per ovviare tale problema, magari permettere una installazione veloce di flash player (magari automatica) all' avvio del CD ... o magari qualcosa di ancora più semplice ... avete qualche idea a riguardo???
grazie
Francesco

Di: fraciatta | 26/09/2020 17:10:43

Re: Director: zoom e pan immagini

3hcs4k9tl'altro computer deve avere per forza installato flash player?

Ciao Franciatta,
la soluzione al tuo problema è utilizzare i proiettori (vale sia per Flash che per Director).
Il proiettore ti permetterà di creare un file .exe con tutto incluso e senza bisogno di installare alcun player. Vedi la guida in linea per creare un proiettore e ricordati di aggiungere gli Xtra necessari per il corretto funzionamento del tuo file.

Di: Anonimo | 26/09/2020 17:10:43

Re: Director: zoom e pan immagini

grazie infinite per la risposta
guardando la guida on line ho capito dove agire, almeno credo :
da director : menu modify > movie > xtras > poi dalla tabella ho aggiunto "Flash assets" e "Flash assets options" (erano gli unici che mi sembravano adatti al mio caso)
esiste per caso un Xtra per far funzionare la rotellina del muose come zoom perchè nell' applicazione flash non importata funziona, mentre nell' file.exe generato da director no...

Di: fraciatta | 26/09/2020 17:10:43

Re: rotellina del mouse

In quel caso specifico della rotellina del mouse non ricordo, però di sicuro puoi risolvere facendo tutto in Flash (proiettore compreso). Ma suppongo che non sia la tua soluzione ideale, quindi aspetteremo un ulteriore contributo della comunità.

Di: Anonimo | 26/09/2020 17:10:43

Re: Director: zoom e pan immagini

grazie, attenderò con anzia ulteriori altri contributi...anche se questa discussione non ha trovato molti interessati...
ciao!

Di: fraciatta | 26/09/2020 17:10:43