When dealing with ActionScript’s ExternalInterface.addCallback the method to be exposed might not be immediately available. whenAvailable polls until a property shows up on a javascript object, at which point it invokes the provided callback.

function whenAvailable(availableObject, availableProperty, onAvailable) {
  if ('object' != typeof(availabilityCheckers)) {
    availabilityCheckers = {};
  }
 
  var checkAvailabilityFunction = function(){
    if('undefined' != typeof(availableObject[availableProperty])){
      checker = availabilityCheckers[checkerInterval];
      clearInterval(checker.interval);
      checker.onAvailable(availableObject, availableProperty, availableObject[availableProperty]);
    }
  };
 
  var checkerInterval = setInterval(checkAvailabilityFunction, 500);
 
  availabilityCheckers[checkerInterval] = {
    interval: checkerInterval,
    onAvailable: onAvailable
  }
}

Leave a Comment

Enclose code in <code lang="ruby"></code> if you care.
Preview your comment using the button below.