Hello Rick,
I didn't used images in JavaScript yet, because I am afraid about conversions
between "Core Image" images and "JavaScript" images. I am sure this conversion
won't be CPU or GPU cost free. Thats why I always try to keep JavaScript inputs
and outputs as simple as possible.
best,
Achim Breidenbach
Boinx Software
On 17.06.2011, at 10:25, Rick Mann wrote:
> Thanks, I think that'll do the trick!
>
> It only works for Javascript types, right? I can't pass an image through the
> state machine in the same way, can I? Doesn't matter, I can make it work with
> strings, just curious.
>
> --
> Rick
>
> On Jun 17, 2011, at 1:16 , Achim Breidenbach wrote:
>
>> Hello Rick,
>>
>> in BoinxTV most of such time critical things that are triggered by events I
>> implemented as a state machine in Javascript. A state machine is a program
>> that has a certain state and keeps it for the next run loop. The state will
>> only be changed if a certain condition is matched. In your case such a
>> machine could look like this:
>>
>> var oldString = "";
>> var currentString = "";
>> var startTime = 0;
>> var state = 0;
>>
>> function (__string string1, __string string2, __number animationTime)
>> main (__number currentTime, __string newString, __number transitionDuration)
>>
>> {
>> var animationTime = 0;
>>
>> switch(state)
>> {
>> case 0: // wait for new string
>>
>> if(oldString != newString){
>> startTime = currentTime;
>> currentString = newString;
>> state = 1; // make transition to new string
>> }
>> break;
>>
>> case 1: // make transition to new string
>>
>>
>> animationTime = (currentTime - startTime) / transitionDuration;
>>
>> if(animationTime >= 1.0){
>> // transition is over
>> oldString = currentString;
>> state = 0; // wait for next string
>> }
>>
>> break;
>>
>> default:
>> state = 0;
>> }
>>
>> var result = new Object();
>> result.string1 = oldString;
>> result.string2 = currentString;
>> result.animationTime = animationTime;
>> return result;
>>
>> }
>>
>> find attached a little composition where this code is embedded. Just change
>> the text from the "Message" input field to make it transition to the next
>> text.
>>
>> <text transition.qtz>
>>
>> The big advantage of such a state machine is, that you can add more states
>> to it without breaking the others. even if there are states that jumps to
>> other states only for certain conditions, you are always sure that the other
>> parts don't get affected. Also you can easily trace the "state" variable
>> within your code to see if you finally arrives at the start again. This
>> programming pattern gives you a very robust code. In this case nothing can
>> dusturb the transition animation. Only when the transition has finished a
>> new text will be accepted.
>>
>> best,
>>
>> Achim Breidenbach
>> Boinx Software
>>
>>
>>
>> On 17.06.2011, at 09:09, Rick Mann wrote:
>>
>>> I've been doing these on-screen graphics for a web channel that covers
>>> space launches. We show a couple of different countdown clocks, as well as
>>> a block of ascent parameters.
>>>
>>> But for the last nine minutes of a shuttle launch, there's not much to
>>> show. I have a couple dozen events that occur at various times during the
>>> count. I want to display each one as it occurs. An event is just a text
>>> string describing the event ("APU Start," "Steering Test," etc.).
>>>
>>> My custom patch can either output each string on a output port, or output
>>> an array of structures that has the string and the associated time. The
>>> former is easier for me.
>>>
>>> How can I crossfade from the last event string to the next, especially when
>>> they come in rapid succession (perhaps more quickly than the crossfade
>>> duration)?
>>>
>>> I was doing a similar cross fade between a set of images, and it was a real
>>> pain to build the structure for it.
>>>
>>> Thanks for any suggestions,
>>> Rick
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Quartzcomposer-dev mailing list ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/achim%40boinx.com
>>>
>>> This email sent to [email protected]
>>
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com
This email sent to [email protected]