私の仕事は、ユーザーがウェブカメラでスナップショットを撮ったり、ムービークリップにアタッチしたり、髪、帽子、眼鏡などを追加して自分の肖像画を変更できるようにするFlashアプリケーションをコーディングすることですメニューにあります。AS3 - ムービークリップにウェブカメラビデオを添付する
私はちょうど2つのすばらしいスクリプトを修正しようとしています:ウェブカメラhttp://www.riacodes.com/flash/captures-images-from-the-webcam-and-save-them-to-the-desktop/とドラッグ&のドロップ機能はフリートランスフォームツールhttp://blog.ryantan.net/2010/08/free-transform-manager/です。
ドキュメントクラスとして使用したときにウェブカメラが動作するように管理しました。フリートランスフォームツールのコードがドキュメントクラスにあり、WebcamスクリプトがWebcamactions.asファイルにあるようにコードを変更したとき、私はムービークリップをもう制御できません。ムービークリップ(「imagecanvas」などビデオ)。私のMacのウェブカメラのライトは、この機能が動作していることを示していますが、動画はムービークリップには表示されません。
ドキュメントクラス---------- TestFTM.as
package {
import Webcamactions;
import com.ryan.geom.FreeTransformEvent;
import com.ryan.geom.FreeTransformManager;
import fl.controls.CheckBox;
import fl.motion.easing.Circular;
import fl.motion.MatrixTransformer;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.text.TextField;
import flash.ui.Mouse;
public class TestFTM extends MovieClip {
public var myVar:Webcamactions = new Webcamactions();
private static var _instance:TestFTM;
public static function get instance():TestFTM {
return _instance;
}
public var fts:FreeTransformManager;
public function TestFTM():void {
_instance = this;
// Set up FreeTransformManager
fts = new FreeTransformManager(false);
// Register objects
fts.registerSprite(box, { minW:50, maxW:500 });
}
}
}
WEBCAMのCLASS ------- Webcamactions.as
package {
import flash.display.Sprite;
import flash.media.Camera;
import flash.media.Video;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.MouseEvent;
import flash.net.FileReference;
import flash.utils.ByteArray;
import com.adobe.images.JPGEncoder;
import flash.display.MovieClip;
public class Webcamactions extends MovieClip
{
public var camera:Camera = Camera.getCamera();
public var video:Video = new Video();
public var bmd:BitmapData = new BitmapData(400,480);
public var bmp:Bitmap;
public var fileReference:FileReference = new FileReference();
public var byteArray:ByteArray;
public var jpg:JPGEncoder = new JPGEncoder();
public var nowebcam:MovieClip = new MovieClip();
public var capture:MovieClip = new MovieClip();
public var imagecanvas:MovieClip = new MovieClip();
public var mask_object:MovieClip = new MovieClip();
public function Webcamactions():void {
nowebcam.visible = false;
capture.addEventListener(MouseEvent.MOUSE_UP, captureImage);
if (camera != null)
{
camera.setMode(640,480,30,false); // setMode(videoWidth, videoHeight, video fps, favor area)
video.smoothing = true;
video.attachCamera(camera);
video.width = 640;
video.height = 480;
video.x = -120;
video.y = 0;
imagecanvas.addChild(video);
}
else
{
nowebcam.visible = true;
trace("No Camera Detected");
}
}
public function captureImage(e:MouseEvent):void
{
bmd.draw(video);
while (imagecanvas.numChildren) {
imagecanvas.removeChildAt (0);
}
bmp = new Bitmap(bmd);
trace(bmp.width);
trace(bmp.height);
bmp.width=800;
bmp.height=960;
bmp.x = -120;
imagecanvas.addChild(bmp);
capture.visible = true;
}
}
私はのようにしてみてください可能な限り明確に、私は本当に感謝しています。前もって感謝します。
問題が解決するかどうかわかりませんが、Camera.Camera.getCamera()などの変数をWebCamactionsのコンストラクタ関数で直接宣言した場所の代わりに開始することをお勧めします。また、コンストラクタ関数は通常、voidを返すとして宣言されませんが、戻り値の型はありません(宣言されていないにもかかわらず、クラスのインスタンスを返すと見なすことができます)。 –