View Full Version : addDataToSelection problems
animatorgeek
01-18-2008, 07:43 PM
I'm having some problems when I use addDataToSelection(). I'm trying to store the current time in the selected object (a symbol instance). Here's my code:
var date_object = new Date();
var current_time = date_object.getTime(); // number of milliseconds since 1970
fl.getDocumentDOM().addDataToSelection("blah", "integer", current_time);
On the call to addDataToSelection, Flash gives me an error that says "Argument number 1 is invalid." What am I doing wrong? I'm following the prototype for the function that I've seen in several documents. It doesn't seem to matter what string I put in place of "blah" -- it always gives me the same error.
I'm using Flash 8 on Windows XP.
Thanks for any help you can give.
animatorgeek
01-18-2008, 07:50 PM
It seems I've been able to get the function to work outside the context of the command I'm developing, so I should probably give the whole command text for context:
// change this to whatever frame number is being assigned (should be same as filename)
var FRAME_NUMBER = 1;
var MOD_VAR_NAME = "modTime";
// Get the current time
var date_object = new Date();
var current_time = date_object.getTime(); // number of milliseconds since 1970
//fl.trace(current_time);
// Get the persistent data timestamp that says when this symbol's frame was set
var mod_time = fl.getDocumentDOM().selection[0].getPersistentData(MOD_VAR_NAME);
// if mod_time is undefined, set it to 0, which wil treat it like it hasn't been modified in a long time
if(mod_time == undefined)
{
mod_time = 0;
}
fl.trace("object's old timestamp: " + mod_time);
var time_since_mod = current_time - mod_time;
// Set the instance to "single frame"
fl.getDocumentDOM().setElementProperty('loop', 'single frame');
if(time_since_mod > 2000) // if it's been more than two seconds since the last modification
{
new_frame = FRAME_NUMBER - 1;
}
else
{
// get ones place of the current frame number
var new_frame = (fl.getDocumentDOM().getElementProperty('firstFram e') + 1) % 10;
new_frame *= 10;
new_frame += FRAME_NUMBER - 1;
}
// Set the new start frame
fl.getDocumentDOM().setElementProperty('firstFrame ', new_frame);
// Set the persistent data with a timestamp that says when this symbol's frame was set
fl.getDocumentDOM().addDataToSelection(MOD_VAR_NAM E, "integer", current_time);
It makes it through the whole command but chokes on that last line with the error mentioned above.
animatorgeek
01-18-2008, 08:27 PM
Quick update: if I change the last parameter I pass to addDataToSelection to be a constant integer (e.g. 20), the call works fine. Now my best bet is that it's passing the number held in the variable current_time as a float, even though I never assign it any value other than an integer. I trued using parseInt() to explicitly cast it as an integer but I still got the same error. I tried ORing it with 0 to cast it as an integer (a trick I learned elsewhere online), but still the same result.
Am I missing something? Is there some other way to pass the contents of a variable the same way as if I had passed an integer constant? Or will Ijust have to store the data as a float?
animatorgeek
01-18-2008, 09:43 PM
Well, I've gotten it working by substituting in "double" instead of "integer".
So is "integer" only for constants? Is there no way to enter data from a variable as an integer? Not that it really matters a lot, I suppose, but I'm always interested in finding a more efficient solution....
|
vBulletin® v3.8.4, Copyright ©2000-2009, Jelsoft Enterprises Ltd.