Newsgroup: it.comp.appl.macromedia
Titolo: [DIR] Scroller lento

Sono un newbye del Director, ho provato ad implementare un behaviour 
script per lo scrolling del testo ma in MMDR 8 è troppo lento.
Il behavior incluso in director 8 - oltre che essere lento quanto questo 
- ha parecchi inconvenienti:
a) le frecce, la scrollbar e lo scroll handle vengono riposizionati dallo 
script;
b) è necessario includere una scrollbar ed uno scroll handle anche se 
questi non sono presenti nel progetto grafico;
(NOTA: se disabilito l'antialiasing del testo la velocità è decisamente 
accettabile, ma questa soluzione non è accettabile per motivi estetici)
Lo script va associato alle frecce che serviranno per far scorrere il 
testo.
Potete indicarmi dove sbaglio:
-- Proprietà
property currentSpriteNum
property pTextSprite
property pDirection
-- Authoring UI
on allTextSprites
  res = []
  i = the lastChannel
  repeat while i > 0
    if sprite(i).member.type = #text then
      res.add(i&" : "&sprite(i).
member.name
)
    end if
    i = i - 1
  end repeat
  return res
end allTextSprites
on getPropertyDescriptionList me
  PList = [:]
  txtSprites = allTextSprites()
 
  addProp PList, #pTextSprite, [ \
    #format: #integer, \
    #default: txtSprites[1], \
    #range: txtSprites, \
    #comment: "Sprite di testo:" ]
  addProp PList, #pDirection, [ \
    #format: #symbol, \
    #default: #up, \
    #range: [ #up, #down ], \
    #comment: "Direzione:" ]
  return PList
end getPropertyDescriptionList
-- Eventi
on beginSprite me
  sprite(pTextSprite).puppet = TRUE
end beginSprite
on endSprite me
  sprite(pTextSprite).puppet = FALSE
end endSprite
on ScrollText me, amount
  spr = sprite(pTextSprite)
  mbr = spr.member
  ------ Versione alternativa:
  --
  --  newTop = mbr.scrollTop + amount
  --  newTop = max(0,newTop)
  --  newTop = min(newTop,mbr.height - spr.height)
  --  mbr.scrollTop = newTop
  --
  if amount > 0 then
    mbr.scrollByPage(1)
  else
    mbr.scrollByPage(-1)
  end if
end ScrollText
on mouseDown me
  amount = sprite(pTextSprite).width
  if pDirection = #up then
    amount = -amount
  end if
  repeat while the mousedown
    me.ScrollText(amount)
    updateStage
  end repeat
end mouseDown
-- 
Roberto Lupi

 script per lo scrolling del testo ma in MMDR 8 è troppo lento.
....
Non ho analizzato tutto lo script, ma temo ci sia ben poco da fare.
Anchio ho dei testi da far scorrere e ho ridotto al minimo le istruzioni per
lo scroll, ma con l'antialias è comunque lento.
Se poi devi distribuire il CD e questo deve funzionare anche su macchine di
classe Pentium1, lo scroll con l'antialias sarà ancora più lento.

, 
jodek...@inwind.it
 says...

Un collega è riuscito a costruire un sistema che è più veloce nello 
scrolling: in pratica, abbiamo utilizzato un testo con framing impostato 
a "Adjust to fit" invece di "Fixed" e due bitmap uguali allo sfondo come 
maschera; invece di usare ScrollTop abbiamo semplicemente spostato tutto 
lo sprite di testo. Questa soluzione funziona, ma - francamente - la 
trovo poco pulita.
-- 
Roberto Lupi
http://www.lupi.ws/

 scrolling: in pratica, abbiamo utilizzato un testo con framing impostato
Sì, è un metodo che avevo già sentito. Ha il vantaggio (mi pare) di potere
fare uno scrolling pixel-by-pixel anziché by-line. Ma se il testo non è un
entita definita a priori riesci lo stesso?
Alb.

 entita definita a priori riesci lo stesso?
Non ho provato.


, 
Rob...@lupi.ws
 says...

Il problema dello scroll lento si può risolvere con il prerender, 
raggiungibile sul property inpector - text lista delle propietà.
Vi allego la nota tecnica di macromedia. Il sistema è macchinoso ma da 
bouni risultati.
Enjoy Gimzo
Anti-aliased text renders slowly
  Issue 
  Text members in Director 7 and Director 8 with anti-aliasing enabled 
seem to take longer to render
  than in previous versions of Director. 
  Solution 
  Set the Pre-Render of the text cast member to copy Ink or Other Ink 
depending on the ink setting of
  the text sprite.
  Preload the text members using the preLoadMember command. A good place 
to preload the
  member(s) would be in a movie script 
  In addition one can render text sprites off of the Stage a few frames 
before needed. 
  Using the following steps: 
   1
      Place the text sprite in the score several frames ahead of where 
you want it to
      appear. 
   2
      Change the locH of the sprite; with Director 8 click the sprite tab 
in the Property
      inspector, then add 1000 to the loch in the sprite geometry 
section. In Director 7
      click on the sprite properties icon in the sprite info overlay and 
add 1000 to the
      "left" location box.
   3
      Use the following as a frame script where you want the text sprite 
to appear:
        on enterFrame
          sprite(1)Loch = sprite(1)Loch - 1000 
          --moves the sprite 1000 pixels to the right 
        end
  Note: Other work arounds are using field cast members or bitmaps cast 
members.