-
V-cam inside Movieclip
Hello actionscript wizards! Once again I call for your help in my time of...average...need!
What I want to do is pretty simple, but I'm not very good at actionscript. The following image will explain it pretty well, but I will put it in writing also.
What I want to do is put the image of the v-cam inside a movieclip, kind of like a tv screen. So whatever the vcam is looking at, it will display inside a seperate movieclip, instead of the whole stage.
Here is an example of what I want to do, on a basic level:
The code for the vcam is unaltered from the downloadable version of it, so can anyone help me with this?
Code:
visible=false;
////////////////////////////////////////////////////////////////////////////
// Get stage width and height //////////////////////////////////////////////
var oldScaleMode:String=stage.scaleMode;
stage.scaleMode="exactFit";
var sW:Number=stage.stageWidth;
var sH:Number=stage.stageHeight;
stage.scaleMode=oldScaleMode;
////////////////////////////////////////////////////////////////////////////
// Get Vcam width and height ///////////////////////////////////////////////
var bounds_obj:Object=this.getBounds(this);
var camH:Number=bounds_obj.height;
var camW:Number=bounds_obj.width;
////////////////////////////////////////////////////////////////////////////
// Creat Point for dynamic registration point //////////////////////////////
var rp:Point=new Point(x,y);
////////////////////////////////////////////////////////////////////////////
// Add Event Listeners /////////////////////////////////////////////////////
addEventListener(Event.ENTER_FRAME,camControl);
addEventListener(Event.REMOVED_FROM_STAGE,reset);
////////////////////////////////////////////////////////////////////////////
// Create BitmapData ///////////////////////////////////////////////////////
var bmp:Bitmap;
var myBitmapData:BitmapData=new BitmapData(sW,sH,true,0);
bmp=new Bitmap(myBitmapData);
camControl();
stage.addChild(bmp);
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
function camControl(...event):void {
parent.visible=true;
////////////////////////////////////////////////////////////////////////////
// Move the registration point to the vCams current position ///////////////
rp.x=x;
rp.y=y;
////////////////////////////////////////////////////////////////////////////
// Gets the current scale of the vCam //////////////////////////////////////
var h:Number=camH * scaleY;
var w:Number=camW * scaleX;
////////////////////////////////////////////////////////////////////////////
// Gets the stage to vCam scale ratio //////////////////////////////////////
var _scaleY:Number=sH / h;
var _scaleX:Number=sW / w;
////////////////////////////////////////////////////////////////////////////
// Positions the parent ////////////////////////////////////////////////////
x2=w / 2 * _scaleX;
y2=h / 2 * _scaleY;
scaleX2=_scaleX;
scaleY2=_scaleY;
rotation2=- rotation;
////////////////////////////////////////////////////////////////////////////
// Draw bitmap of parent////////////////////////////////////////////////////
myBitmapData.lock();
myBitmapData.fillRect(myBitmapData.rect,0x00);
myBitmapData.unlock();
myBitmapData.draw(stage);
////////////////////////////////////////////////////////////////////////////
// Apply vCam filters to bitmap ////////////////////////////////////////////
bmp.filters=this.filters;
bmp.transform.colorTransform=this.transform.colorTransform;
parent.visible=false;
}
function reset(e:Event):void {
////////////////////////////////////////////////////////////////////////////
// Cleans up data for garbage collection ///////////////////////////////////
removeEventListener(Event.ENTER_FRAME,camControl);
removeEventListener(Event.REMOVED_FROM_STAGE,reset);
stage.removeChild(bmp);
myBitmapData.dispose();
bmp=null;
////////////////////////////////////////////////////////////////////////////
// Resets parent properties ////////////////////////////////////////////////
parent.scaleX=1;
parent.scaleY=1;
parent.x=0;
parent.y=0;
parent.rotation=0;
parent.visible=true;
}
function set x2(value:Number):void {
var p:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
parent.x+= value - p.x;
}
function get x2():Number {
var p:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
return p.x;
}
function set y2(value:Number):void {
var p:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
parent.y+= value - p.y;
}
function get y2():Number {
var p:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
return p.y;
}
function get scaleX2():Number {
return parent.scaleX;
}
function set scaleX2(value:Number):void {
setProperty2("scaleX",value);
}
function get scaleY2():Number {
return parent.scaleY;
}
function set scaleY2(value:Number):void {
setProperty2("scaleY",value);
}
function get rotation2():Number {
return parent.rotation;
}
function set rotation2(value:Number):void {
setProperty2("rotation",value);
}
function setProperty2(prop:String,n:Number):void {
var a:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
parent[prop]=n;
var b:Point=parent.parent.globalToLocal(parent.localToGlobal(rp));
parent.x-= b.x - a.x;
parent.y-= b.y - a.y;
}
Any replies are greatly appreciated! You can copy/paste the code, change it, and then post it with comments if you like, I would just like to know what you changed to make it possible!
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|