Ah, I'm not Alastair, but since I egged this all on with my structure smoothing questions, I give considerable thanks to you on this. Noting the difference between null and undefined is a biggie... I'm not sure if this has ever actually come up before on the QC-dev list. Should this be done as a matter of good practice (like in the beginning of the code, where : if ((inputStructure != null) && !(_testMode)) ?
Thanks, George Toledo On Mon, Jul 5, 2010 at 2:29 PM, Christopher Wright <cwri...@kineme.net>wrote: > This isn't a bug -- you're assigning B to an undefined value, and then > trying to do math on it. > > In general, do not check against null in JavaScript, check against > undefined (null _is_ defined, so it's different from undefined) > > You want your script to look something like this: (search for "THIS IS > EXTRAORDINARILY IMPORTANT" for the relevant change) > > > var str = new String(); > var array = new Array(); > var initalised = false; // <-- UNIMPORTANT CHANGE: new Boolean() is a > waste of code, just set it to false. > var sum = 0; // <-- UNIMPORTANT CHANGE: new Number() is a waste of > code, just set it to 0 > function (__structure outputStructure, __string debug, __number > debug1,__number debug2) > main (__structure inputStructure, __number increasingScale, > __number decreasingScale, > __number time, __boolean Reset) > { > var result = new Object(); > if ((inputStructure != null) && !(_testMode)) > { > if (Reset) initalised = false; > /* _____ > Init the 2nd dimensions for array (only once) > */ > if (initalised == false) > { > for (i in inputStructure) > { > array[i] = new Array(); > for (j in inputStructure[i]) > { > // array[i][j] = 1 - > Math.floor(Math.random() *20)/10; > array[i][j] = inputStructure[i][j] ; > // *1. trying to coerce value not pointer?! doesn't seem to make any diff > } > } > sum++ ; > result.debug1 = sum; > initalised = true; > } > // if (sum <3) { initalised = false } > /* > Debugging test > */ > if (initalised) > /* { > str = > String.fromCharCode(Math.floor(Math.random()*512)); > result.debug = str; > result.debug2 = array[4][2]; > } > */ > // sum = 0 // comment this line out to count the total patch > executions rather than times per patch execution > /* _____ > Main Routine > */ > if (initalised) > { > for (i in inputStructure) > { > A = inputStructure[i]; > B = array[i]; > // if (array[i] = null) {array[i] = new > Array()} // This line didn't work so I made the initalise routine. > for (j =0; j <A.length; j++) > { > if (B == undefined) //// > <-------------- THIS IS EXTRAORDINARILY IMPORTANT > break; > var value = A[j]; > var lastValue = B[j]; > if (lastValue != null) > { > if(value > lastValue) { > //sum++; > lastValue += > increasingScale * (value - lastValue); > } > else if(value < lastValue) { > //sum++; > lastValue += > decreasingScale * (value - lastValue); > } > B[j] = lastValue; > } > else > B[j] = value; > // array[i][j] = > Math.floor(array[i][j] *10)/10; > } > } > } > } > // if (array != null) > result.outputStructure = array; > return result; > } > > -- > [ christopher wright ] > cwri...@kineme.net > http://kineme.net/ > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > > http://lists.apple.com/mailman/options/quartzcomposer-dev/gtoledo3%40gmail.com > > This email sent to gtole...@gmail.com >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com