hi,
thx for the advice.
1. programmatically adding video to stage:
<mx:Box id="videoContainer" borderStyle="solid"/>
var videoContainer_:UIComponent = new UIComponent();
videoContainer_.addChild(video);
videoContainer.addChild(videoContainer_);
2. as component
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="CameraExample();" xmlns:test="test.*"
>
<mx:VBox width="100%" height="100%" id="CONTAINER" horizontalAlign="center" verticalAlign="middle" borderStyle="solid">
<mx:Button label="button1"/>
<mx:Box borderStyle="solid">
<test:CameraUIComponent id="video" width="640" height="480"/>
</mx:Box>
<mx:Button label="button1"/>
</mx:VBox>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
public function CameraExample():void
{
video.CameraExample(640,480,10);
}
]]>
</fx:Script>
</s:Application>
</code>
CameraUIComponent.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:UIComponent xmlns:mx="http://www.adobe.com/2006/mxml" width="{video.width}" height="{video.height}">
<mx:Script>
<![CDATA[
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.*;
import flash.media.Camera;
import flash.media.Video;
import mx.managers.SystemManager;
public var video:Video = new Video();
public var camera:Camera;
public function CameraExample(height:Number = 640,width:Number = 480,frameRate:Number = 25) {
systemManager.stage.scaleMode = StageScaleMode.NO_SCALE;
// systemManager.stage.align = StageAlign.TOP_LEFT;
camera = Camera.getCamera();
camera.setMode(height,width,frameRate,false);
if (camera != null) {
camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
video.width = camera.width;
video.height = camera.height;
video.attachCamera(camera);
addChild(video);
} else {
trace("You need a camera.");
}
}
private function activityHandler(event:ActivityEvent):void {
trace("activityHandler: " + event);
}
override protected function createChildren():void
{
super.createChildren();
video = new Video();
addChild( video );
// view.addEventListener(Event.ADDED_TO_STAGE, update); // Make sure the first frame is rendered
}
/* override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
}
*/ ]]>
</mx:Script>
</mx:UIComponent>
- only together we can create a truly free world
- plz support dwaves to keep it up & running!
- (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
- really really hate advertisement
- contribute: whenever a solution was found, blog about it for others to find!
- talk about, recommend & link to this blog and articles
- thanks to all who contribute!