flash场影控制

var radar_offset:Number=0;
var currentid:Number=0;
var topid:Number=1;
var hotspots:Array=new Array;

// Create container movieclip
var vr:MovieClip = _root.createEmptyMovieClip("vr", 1);
// prevent access to "real" root
vr._lockroot=true;

function clearHotspots() {
 var mc:MovieClip;
 var i:Number;
 for (i=0;i<hotspots.length;i++) {
  mc=hotspots[i];
  mc.removeMovieClip();
 }
 hotspots=new Array();
}

function loadPanorama(id:Number) {
 // Create a Movieclip loader
 var myLoader = new MovieClipLoader();
 var myListener = new Object();
 
 // remove old Hotspots
 clearHotspots();

 myListener.onLoadStart = function () {
  var filename:String;
 // Set the dimentions and position of the pano
  vr.window_width=470;
  vr.window_height=380;
  vr.window_x=120;
    vr.window_y=10;
 // change autorotation 
    vr.autorotate=0.5;
    vr.autorotate_delay=20;
  
  // add a preview bar...
  var my_fmt:TextFormat = new TextFormat();
  my_fmt.bold = true;
  my_fmt.font = "Arial";
  my_fmt.size = 12;
  my_fmt.color = 0xffffff;
  _root.createTextField("pretxt",10,170,40,200,20);
  _root.pretxt.setNewTextFormat(my_fmt);
  _root.pretxt.selectable = false;
  _root.pretxt.text = "Loading...";
  _root.createEmptyMovieClip("prebar",21);
 };

 myListener.onLoadProgress = function(target_mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
  // update progress bar
  var x1:Number,x2:Number,y1:Number,y2:Number;
  _root.pretxt.text = "Loading... " + Math.floor(100*loadedBytes/totalBytes) + " %";
  _root.prebar.clear();
  _root.prebar.beginFill(0x0000FF, 30);
  _root.prebar.lineStyle(2, 0x000080, 100);

  x1=_root.pretxt._x;
  x2=x1 + 180 * loadedBytes/totalBytes;
  y1=_root.pretxt._y+20;
  y2=y1+10;
  
  _root.prebar.moveTo(x1, y1);
  _root.prebar.lineTo(x2, y1);
  _root.prebar.lineTo(x2, y2);
  _root.prebar.lineTo(x1, y2);
  _root.prebar.lineTo(x1, y1);
  _root.prebar.endFill();
  
 };
 
 myListener.onLoadComplete = function () {
  // remove progress bar
  _root.pretxt.removeTextField();
  _root.prebar.removeMovieClip();
 };

 
 myListener.onLoadInit = function () {
  setupPanorama(currentid);
  // Add another hotspot to position pan 0, tilt -90 (nadir) without rollover effect
  var hs_p2q:MovieClip=_root.attachMovie("pano2qtvr_lib","hs_textmc2",10200);
  hs_p2q.onRelease=function() {
   _root.getURL('http://www.pano2qtvr.com','_blank');
  }
  vr.pano.addHotspot('p2q',0,-90,hs_p2q);
  // add hotspots to a list to clear them
  hotspots.push(hs_p2q);
  compass.fov._visible=true;
 };

 // add the Listener
 myLoader.addListener(myListener);
 
 // set the parameters for the different panoramas
 if (id==1) {
  filename="park.swf";
  radar_offset=-10;
  compass._x=map._x+map.bt1._x;
  compass._y=map._y+map.bt1._y;
 }
 if (id==2) {
  filename="pavilion.swf";
  radar_offset=110;
  compass._x=map._x+map.bt2._x;
  compass._y=map._y+map.bt2._y;
 }
 if (id==3) {
  filename="fountain.swf";
  compass._x=map._x+map.bt3._x;
  compass._y=map._y+map.bt3._y;
  radar_offset=210;
 }
 // remove the radar during loading
 compass.fov._xscale=0;
 compass.fov._yscale=0;
 compass.fov._visible=false;

 // ... and finally load the pano!
 myLoader.loadClip(filename, vr);
 currentid=id;
 
}

function addNextPanoHotspot(aid:String,apan:Number,atilt:Number,hstext:String,nid:Number) {
 // Add first Hotspot
 topid++;
 var hs_textmc1:MovieClip=_root.attachMovie("hs_lib","hs_textmc1",10000 + topid);

 // Set the text of this instance
   hs_textmc1.hstext.text=hstext;
 // Add a action to this instance
   hs_textmc1.onRelease=function() {
  loadPanorama(nid);
   }
 // Rollover effect
   hs_textmc1.hstext._visible=false;
   hs_textmc1.onRollOver=function() {
  hs_textmc1.hstext._visible=true;
   }
   hs_textmc1.onRollOut=function() {
  hs_textmc1.hstext._visible=false;
   }
 vr.pano.addHotspot(aid,apan,atilt,hs_textmc1);
 // add hotspots to a list to clear them
 hotspots.push(hs_textmc1);
}

function setupPanorama(id:Number) {
 // reset the topid
 topid=0;
 // add the hotspots for to the other panoramas
 if (id==1) {
  addNextPanoHotspot("pavilion", 69, 0, "Pavilion",2);
  addNextPanoHotspot("fountain", 170, 0, "Fountain",3);
 }
 if (id==2) {
  addNextPanoHotspot("park", 115, 0, "Park",1);
  addNextPanoHotspot("fountain", 54, 0, "Fountain",3);
 }
 if (id==3) {
  addNextPanoHotspot("park", 120, 0, "Park",1);
  addNextPanoHotspot("pavilion", 144, 0, "Pavilion",2);
 }
}


// attach the border. The border is "higher" then the restm so it is in the forgound
var border:MovieClip=_root.attachMovie("border_lib","border",20001,{_alpha:100});

// add the map
var map:MovieClip=_root.attachMovie("map","map",20005,{_x:0,_y:100});

// connect the buttons in the map
map.bt1.onPress=function () {
 loadPanorama(1);
}
map.bt2.onPress=function () {
 loadPanorama(2);
}
map.bt3.onPress=function () {
 loadPanorama(3);
}

// ... and the rader is even higher...
var compass:MovieClip=_root.attachMovie("compass_lib","compass",20010,{_x:60,_y:200,_alpha:50});

compass.fov._xscale=0;
compass.fov._yscale=0;
compass._visible=true;
compass.fov._visible=false;

// update the shape of the rader on each frame
_root.onEnterFrame=function() {
 compass.fov._rotation=-(vr.pano.getPan()+radar_offset);
 compass.fov._xscale=100*Math.tan(vr.pano.getFov()*Math.PI/360);
 compass.fov._yscale=100*Math.cos(vr.pano.getTilt()*Math.PI/180);
}

// load the pavilion pano first
loadPanorama(2);


 

原文地址:https://www.cnblogs.com/hhq80/p/1517921.html