here is the CLOCKFACE script...coded in 3 MINUTES...17 LINES of CODE
Geoff Canyon
geoff at runrev.com
Mon Jun 6 11:45:32 EDT 2005
I've put up a summary of the refinement of this code at:
http://www.inspiredlogic.com/beautiful/clockface.html
I had to make a modification to the below "final" version, both to
use the split command and because I realized that sometimes
450 - (30 * T[1]) - trunc(T[2] / 2)
won't fall into the range 0-359. If it doesn't the value returned by
the angle of the graphic the next time won't match (because it is
always in 0-359) and so the hour hand's position will be set every
second, which we're trying to avoid.
The posted version is now:
on openCard
setTime
end openCard
on setTime
put word 1 of the long time into T --8:13:15
put T & char 2 to 5 of (the long seconds mod 1) into fld "Time"
split T using ":"
get (450 - (30 * T[1]) - trunc(T[2] / 2)) mod 360
if (the angle of grc "Hour") <> it then set the angle of grc
"Hour" to it
get (450 - (6 * T[2]) - trunc(T[3] / 10)) mod 360
if (the angle of grc "Minute") <> it then set the angle of grc
"Minute" to it
set the angle of grc "Second" to 360+90-(6 * item 3 of T)
send "setTime" to me in 1-(the long seconds mod 1) seconds
end setTime
Let me know if you see an issue with that.
gc
On May 30, 2005, at 4:37 PM, Dennis Brown wrote:
> That is a good point. I tested it out, and the useless "set angle"
> results in about 70ms of wasted time every second (7% CPU). I am
> surprised it is so high. Doing the test and skipping it is a
> thousand times faster. I fixed up the script as my own exercise
> for the student. You can see the time lag slightly when the
> computer is busy with something else, like loading a web page.
>
> Note: the angle calculations had to be changed to match what the
> angle returned for these graphics. The clock is in my user space
> (see3d). It takes a licking, but keeps on ticking...
>
> on openCard
> setTime
> end openCard
>
> on setTime
> set the itemDelimiter to ":"
> put word 1 of the long time into T --8:13:15
> put T & char 2 to 5 of (the long seconds mod 1) into fld "Time"
> get 360+90-(30 * item 1 of T) - trunc((item 2 of T) / 2)
> if (the angle of grc "Hour") <> it then set the angle of grc
> "Hour" to it
> get 360+90-(6 * item 2 of T) - trunc((item 3 of T) / 10)
> if (the angle of grc "Minute") <> it then set the angle of grc
> "Minute" to it
> set the angle of grc "Second" to 360+90-(6 * item 3 of T)
> send "setTime" to me in 1-(the long seconds mod 1) seconds
> end setTime
>
>
> Dennis
>
> On May 30, 2005, at 2:21 PM, Geoff Canyon wrote:
>
>
>> On May 30, 2005, at 10:04 AM, Dennis Brown wrote:
>>
>>
>>
>>> Nice! I learn something every minute on this list --four heads
>>> are better than one. I do believe that the clock is down to its
>>> essence now. Every line does something essential, except
>>> displaying the "Time" field to check its accuracy. I put the
>>> latest version in my user space also (see3d).
>>>
>>>
>>
>> re: down to its essence -- obviously for this demo it doesn't
>> matter, but in practice, I would want to put in code to only
>> change the minute and hour hands when they actually need it,
>> rather than setting them to the same startAngle (except when they
>> actually move) each second. I haven't timed this to see whether
>> it's actually a concern.
>>
>> And multiple heads are definitely better than one. That's why I
>> plan to grow additional heads as soon as possible. ;-)
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
More information about the use-livecode
mailing list