Director: pan immagine e scroll

salve a tutti,
sono nuovo in questo forum e spero di aver inserito la discussione nella sezione giusta...
Sto cominciando a creare un piccolo Cd multimediale con Director 11.5;
non avendo grosse conoscenze di programmazione in particolare del linguaggio LINGO sono in difficoltà con uno script preso dalla rete per lo zoom e il pan delle immagini... visto che non è facile per me modificarlo ad hoc per la mia esigenza specifica vorrei sapere se a qualcuno del forum è capitato di lavorare con script (Behavior) simili e magari consigliarmene qualcuno (così magari ne trovo uno più adatto)...

Grazie

 fraciatta, N.D.

purtroppo non ho ancora risolto il problema riguardo lo scroll e pan immagine e visto che nn ho ricevuto suggerimenti vi vorrei postare lo script che stavo cercando di modificare...

esso si compone di tre Behavior differenti uno da applicare all' immagine e altri due da applicare ai tasti zoom+ e zoom- ... lo script secondo me funziona bene ma presenta un solo problema quando si clicca l'immagine ingrandita e la si trascina per scorrerla su e giu e dx e sx.

Il problema è questo: quando l'immagine viene ingrandita poco il problema nn si nota ma quando la si ingrandisce un po' di più non si riesce con il mouse a scorrerla tutta.
Il fatto è che ogni volta che si riclicca l'immagine per scorrerla di una nuova porzione l'immagine ritorna sempre alle coordinate di partenza (credo il centro) e quindi non rende possibile lo scorrimento completo.
(cmq è piu facile vederlo direttamente che spiegarlo )...

vorrei che l'immagine ingrandita quando viene fatta scorrere con il cursore nn ritorni al punto di partenza quando ci riclicco per trascinarla e farla scorrere di un altra porzione...

come posso fare ? sono in difficoltà...

gli script sono questi:
IMAGE ZOOM:

-- 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 = the mouseH - pStartLocH
vOffsetV = the mouseV - 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 = vLeft + aOffsetH
if vWidth < pTargetWidth then
vRight = vLeft + vWidth

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

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


gli altri relativi ai tasti ZOOM SONO QUESTI:

ZOOM IN:

on mouseUp me
sendAllSprites(#zoomIn)
end

ZOOM OUT:

on mouseUp me
sendAllSprites(#ZoomOut)
end


attendo fiducioso qualche consiglio...

Francesco

 fraciatta, N.D.
001design.it ® è un marchio registrato.
© 2004-2017 Molfese Paolo - P.Iva: 03430820617 - All rights reserved | Tutti i diritti sono riservati.