Director: pan immagine e scroll

Di: fraciatta | 26/09/2020 17:12:43
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

Risposte



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

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