Posted by
Frédéric Ferrère-2 on
Jun 08, 2009; 9:50pm
URL: https://forum.world.st/Morphic-animation-c-est-lent-tp104210p104212.html
Damien Cassou a écrit :
> 2009/6/7 Frédéric Ferrère <
[hidden email]>:
>
>> je viens de me rendre compte que la période
>> minimum que peut utiliser un morph entre deux appels
>> à la fonction step est de 20 millisecondes (lié je suppose à la variable
>> MinCycleLapse de la classe WorldState).
>>
>
> Ça paraît étonnant car si je déplace un morph à la souris, ça va plus
> vite que ça.
>
>
Peut être que :
- les déplacements ne se font pas pixel par pixel.
- les évènements souris sont capturés à un intervalle de temps plus court.
Dans l'exemple ci-dessous,
un petit carré rouge va se déplacer dans un rectangle noir
de 50 pixels vers la droite et je fais varier plusieurs fois
la valeur de stepTime, les résultats sont assez loin de l'effet souhaité.
avec stepTime <= 30ms (0,5,10,15,20 ou 30) impossible d'avoir moins de
2s pour ce déplacement de 50 pixels.
avec stepTime = 60ms, le déplacement prends 4s (au lieu de 3s).
avec stepTime = 100ms, le déplacement prends 6s (au lieu de 5s).
Environnement:
- OS : Linux Ubuntu 9.04
- VM : exupery
- image : Pharo0.1 Latest update: #10320
==========================================
PasteUpMorph subclass: #MorphSpeedTest
instanceVariableNames: 'rectangle actions startTime actIndex delay'
classVariableNames: ''
poolDictionaries: ''
category: 'SpeedTests'
................................................................
initialize
super initialize.
self stopStepping.
self extent: 600@100;
color: Color black.
rectangle := RectangleMorph new
extent: 30@30;
position: 0@35;
color: Color red.
self addMorph: rectangle.
actions := OrderedCollection new.
actIndex := 1.
delay := 20.
self actionSetTime.
self actionMove.
self actionPrint.
self actionDelayZero.
self actionResetPos.
self actionSetTime.
self actionMove.
self actionPrint.
self actionDelayTen.
self actionResetPos.
self actionSetTime.
self actionMove.
self actionPrint.
self actionDelaySixty.
self actionResetPos.
self actionSetTime.
self actionMove.
self actionPrint.
self actionEnd.
................................................................
step
(actions at: actIndex) value: self
................................................................
stepTime
^delay
................................................................
actionSetTime
actions add: [:act|
self startTime: (Time millisecondClockValue).
actIndex := actIndex + 1. ].
................................................................
actionResetPos
actions add: [:act|
rectangle position: 0@35.
actIndex := actIndex + 1.].
................................................................
actionPrint
actions add: [:act|
| cycle |
cycle := Time millisecondClockValue - act startTime.
Transcript show: (cycle);cr.
Transcript show: act rectangle position;cr.
actIndex := actIndex + 1.].
................................................................
actionMove
1 to: 50 do: [ :nb|
actions add: [:act| rectangle position: (rectangle position
+ (1@0)).
actIndex := actIndex + 1.].].
................................................................
actionEnd
actions add: [:act| act delete].
................................................................
actionDelayTen
actions add: [:act|
delay := 10.
actIndex := actIndex + 1.].
................................................................
Cordialement,
--
Frédéric
_______________________________________________
Squeak-fr mailing list
[hidden email]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-fr