spacer

Webref WebRef   Sitemap · Experts · Tools · Services · Newsletters · About i.com

home / experts / javascript / column86


Embedding Movies with Flash, Part II: Basic Properties

Developer News
OpenOffice 3.2 Lands Amid Critical Changes
Red Hat, IBM Firmly in KVM Virtualization Camp
Red Hat Talks Up Open Source Cloud Plans

Embedding Multiple Objects

In this column we use an improved version of the JavaScript include file, flashcheck2.js. This JavaScript include file is different from the one we have used in Column 85, flashmoviecheck.js, in that it allows you:

  • To embed multiple Flash objects on the same page.
  • To embed a Flash object using a single line of JavaScript.

We accomplished the first enhancement above by adding a parameter to Flash_embedSWF(). The file flashmoviecheck.js includes a fixed ID (for Internet Explorer) and a fixed NAME (for Netscape Navigator). Both are set to "sonify". Setting a fixed object prevents us from setting two or more Flash objects on the same page. The file flashcheck2.js answers this problem by letting you pass the ID/NAME as the second parameter to Flash_embedSWF(). In this way, you can call Flash_embedSWF() as many times as you want on the same page. The fundamental change is to replace the fixed string "sonify" with a parameter. In document.writeln statements, this is straightforward. In other JavaScript statements, we need to use the eval() function to concatenate between fixed strings and a parameter.

We implemented the second enhancement by returning the Flash object from the function Flash_embedSWF(), instead of generating it in the main program. The function Flash_embedSWF() in flashcheck2.js includes a statement for returning the Flash object to the caller:

return (eval('window.document.'+ id));

Here is flashcheck2.js:

winIEpass = ((navigator.appName.indexOf("Microsoft") != -1)
   && (navigator.appVersion.indexOf("Windows") != -1)) &&
  (parseFloat(navigator.appVersion) >= 4) ? true : false;

NNpass = ((navigator.appName == "Netscape")
   && (navigator.userAgent.indexOf("Mozilla") != -1) &&
  (parseFloat(navigator.appVersion) >= 4) &&
  (navigator.javaEnabled())) ? true : false;

  supportedBrowser = (winIEpass || NNpass) ? true : false;

// check for Flash Plug-in in Mac or Win Navigator.
// Get plug-in version.


minPlayer = 4;
var mySwf;

function Flash_checkForPlugIn() {
  var plugin = (navigator.mimeTypes &&
  navigator.mimeTypes["application/x-shockwave-flash"]) ?
  navigator.mimeTypes["application/x-shockwave-flash"].
  enabledPlugin : 0;
  if (plugin) {
    var pluginversion = parseInt(plugin.description.
  substring(plugin.description.indexOf(".")-1))
    if(pluginversion >= minPlayer) {return true;}
  }
  return false;
}

// vbscript check for Flash ActiveX control in windows IE
if(supportedBrowser && winIEpass) {
  document.write(
    '<script language=VBScript>' + '\n' +
    'Function Flash_checkForActiveX()' + '\n' +
    'Dim hasPlayer, playerversion' + '\n' +
    'hasPlayer = false' + '\n' +
    'playerversion = 10' + '\n' +
    'Do While playerversion >= minPlayer' + '\n' +
    'On Error Resume Next' + '\n' +
    'hasPlayer = (IsObject(CreateObject
      (\"ShockwaveFlash.ShockwaveFlash.\" &
      playerversion & \"\")))' + '\n' +
    'If hasPlayer = true Then Exit Do' + '\n' +
    'playerversion = playerversion - 1' + '\n' +
    'Loop' + '\n' +
    'Flash_checkForActiveX = hasPlayer' + '\n' +
    'End Function' + '\n' +
    '<\/script>'
  );
}



function Flash_checkForMinPlayer() {
  if(!supportedBrowser) return false;
  if(NNpass) return (Flash_checkForPlugIn());
  if(winIEpass) return (Flash_checkForActiveX());
}



function Flash_embedSWF(srcURL, id, swfbgColor) {

  if (!Flash_checkForMinPlayer()) return;

  var defaultColor = (document.bgColor != null) ?
  document.bgColor : "#ffffff";
  var bgcolor = (swfbgColor != null) ? swfbgColor 
  : defaultColor;
  document.writeln(
    '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-
    444553540000"' +
    'codebase="http://active.macromedia.com/flash2/
    cabs/swflash.cab#version=4,0,0,0"' +
    'ID="' + id + '" WIDTH="100%" HEIGHT="100%">' +
    '<PARAM NAME="movie" VALUE="' + srcURL + '">' +
    '<PARAM NAME="quality" VALUE="high">' +
    '<PARAM NAME="wmode" VALUE="transparent">'+
    '<PARAM NAME="autostart" VALUE="false">'+
    '<PARAM NAME="bgcolor" VALUE=' + bgcolor + '>' +
    '<embed src="' + srcURL + '" quality="high"'
    + 'bgcolor="' +
    bgcolor + '"' + 'width="100%" height="100%"' +
    'type="application/x-shockwave-flash" NAME="' + id + '"'
    + 'pluginspage="http://www.macromedia.com/shockwave/
    download/index.cgi?P1_Prod_Version=ShockwaveFlash">
    </embed></OBJECT>');

  eval('window.document.'+ id + '.Rewind()');
  return (eval('window.document.'+ id));
}

function sonified_flash(id, myFrame){
  if(!Flash_checkForMinPlayer()) {return;}
  mySwf = eval('window.document.' + id);
  if (mySwf.PercentLoaded()<100) return

  mySwf.GotoFrame(myFrame);
  mySwf.GotoFrame(0);
}

Next: How to play multiple flash movies

http://www.internet.com


The Network for Technology Professionals

Search:

About Internet.com

Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers

webref The latest from WebReference.com Browse >
Search Engine Optimization: Selecting and Embedding Keywords · Are Google's Language Translation Web Services Ready for Prime Time? · Installing and Using Meeplace, the Business Review CMS
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
IBM DB2 10 for z/OS: Justifying the Upgrade · Living La Vida Colo: Choosing the Right Colocation Facility · FTC Concerns over Social Media Privacy Linger


Produced by Yehuda Shiran and Tomer Shiran
All Rights Reserved. Legal Notices.
Created: June 18, 2001
Revised: June 18, 2001

URL: http://www.webreference.com/js/column86/2.html