I am having trouble importing the swf I create with Pano2qtvr and then having it appear behind a mask (scripted). Does anyone have any hints as to how to accomplish this?
Thanks for any help.
Mask for flash
import the pano into a container on your root:jcg wrote:I am having trouble importing the swf I create with Pano2qtvr and then having it appear behind a mask (scripted). Does anyone have any hints as to how to accomplish this?
Thanks for any help.
this flag is set to avoid double loading of the pano
var panoLoadFlag:Boolean;
//pano loading function
function loadPanoContainer(){
this.panoLoadFlag = true;
//now you can use any newly created movie clip either manually on the stage or dynamically on the run:
//this.createEmptyMovieClip("pano_mc",10);
var loadListener:Object = new Object();
loadListener.onLoadProgress = function (target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void{
this.my_pb.setProgress /*for this to happen drag a progressbar from the components library to your stage and place it and name it
*/
(numBytesLoaded,numBytesTotal);//progress bar in manual mode
this.my_pb._alpha = 100-my_pb.percentComplete;
};
loadListener.onLoadInit = function(target_mc:MovieClip){
target_mc._x = 0;
target_mc._y = 85;
};
loadListener.onLoadComplete = function(target_mc:MovieClip){
this.my_pb._visible = false;
this.navigation_mc.panoOn = false;
target_mc.stop();
target_mc._visible = false;
};
var loader_mcl:MovieClipLoader = new MovieClipLoader();
loader_mcl.addListener(loadListener);
loader_mcl.loadClip("swf/panoContainer.swf",this.pano_mc);
}
// here we finally load the pano, but only if it was not loaded before
if (this.panoLoadFlag == false || this.panoLoadFlag == undefined){
this.loadPanoContainer();
}
//end of Pano loading function
so you have your pano now use pano_mc.setMask(myMask_mc) and your are done.
Most things happen if you do not load the pano onto a manually created mc on your stage. Due to the depths management of flash. If you just use insert new symbol movieclip and drag this one from your library to your stage and name it pano_mc your not in trouble with depths and can mask your pano as you wish.
Okay, I've worked out a method that is perfect for me. I call the mask from a different point than within the actionScript used to call the .swf pano files.Blake wrote:I am looking for a solutions for masking as well - I attempted to use your method and could not get it to work... any chance you could post a FLA for use... please... TIA - Blake.
I have a movieClip called mcRenderings. This is my starting point that I'll be dumping things into.
I have second movieClip called VR. This is the clip where I'm loading my pano .swf files.
I have a third movieClip called mask_mc. This is my mask, haha!
In mcRenderings I have a frame of actionScript that reads:
Code: Select all
this.attachMovie("VR","VR",10);
this.attachMovie("mask_mc","mask_mc",20);
VR.setMask(mask_mc);
In VR (my main pano movie), I've got two actionScript layers. The first is this:
Code: Select all
this._x=0
this._y=0
The 2nd actionScipt layer contains my main pano code:
Code: Select all
var radar_offset:Number=0;
var currentid:Number=0;
var topid:Number=1;
var hotspots:Array=new Array;
// Create container movieclip
var vr:MovieClip = 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=500;
vr.window_height=398;
vr.window_x=-68;
vr.window_y=-207.8;
// 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;
createTextField("pretxt",10,170,40,200,20);
pretxt.setNewTextFormat(my_fmt);
pretxt.selectable = false;
pretxt.text = "Loading...";
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;
pretxt.text = "Loading... " + Math.floor(100*loadedBytes/totalBytes) + " %";
prebar.clear();
prebar.beginFill(0x0000FF, 30);
prebar.lineStyle(2, 0x000080, 100);
x1=pretxt._x;
x2=x1 + 180 * loadedBytes/totalBytes;
y1=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
pretxt.removeTextField();
prebar.removeMovieClip();
};
myListener.onLoadInit = function () {
setupPanorama(currentid);
// Add another hotspot to position pan 0, tilt -90 (nadir) without rollover effect
var hs_p2q:MovieClip=attachMovie("pano2qtvr_lib","hs_textmc2",10200);
hs_p2q.onRelease=function() {
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="support/StateFarm-Office.swf";
radar_offset=0;
compass._x=map._x+map.bt1._x;
compass._y=map._y+map.bt1._y;
}
if (id==2) {
filename="support/StateFarm-Welcome.swf";
radar_offset=180;
compass._x=map._x+map.bt2._x;
compass._y=map._y+map.bt2._y;
}
// 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;
}
// add the map
var map:MovieClip=attachMovie("map","map",20005,{_x:-202,_y:-207.8});
// connect the buttons in the map
map.bt1.onPress=function () {
loadPanorama(1);
}
map.bt2.onPress=function () {
loadPanorama(2);
}
// ... and the rader is even higher...
var compass:MovieClip=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
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);
It's important to remember that your linkages be set for each of the movieClips involved. Other than that, this is pretty straightforward.