2011-12-30 3 views
2

Моя задача - закодировать флэш-приложение, которое позволяет пользователю сделать снимок с помощью веб-камеры, прикрепить его к мувиклипу и изменить собственный портрет, добавив волосы, шляпы, очки и т. Д. доступны в меню.AS3 - Присоединение видео для веб-камеры к мувиклипу

Я просто пытаюсь изменить две большие скрипты: Для веб http://www.riacodes.com/flash/captures-images-from-the-webcam-and-save-them-to-the-desktop/ и функция перетаскивания & будет использовать Free Transform Tool http://blog.ryantan.net/2010/08/free-transform-manager/.

Мне удалось получить веб-камеру, когда я использовал ее как класс документа. Когда я изменил свой код, чтобы код Free Transform Tool находился в классе документа, а скрипт веб-камеры находится в файле 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 }); 

     } 
    } 
} 

КАМЕРА КЛАСС ------- 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; 

     } 
    } 

Я стараюсь быть я понимаю, насколько я могу оценить, если кто-нибудь может дать мне несколько советов, как продолжить. Заранее спасибо.

+0

Я не знаю, решит ли это вашу проблему, но я рекомендую вам инициировать переменные, такие как camera = Camera.getCamera() и т. Д., В функции конструктора Webcamactions, а не непосредственно там, где они объявлены , Кроме того, функции-конструкторы обычно не объявляются возвращающими void, но остаются без возвращаемого типа (их можно рассматривать как возвращающие экземпляр класса, хотя он не объявлен). –

ответ

-1

Я мог бы быть здесь глупым, но это не похоже, что вы добавляете imagecanvas в список отображения в веб-камерах.

Кроме того, может быть хорошей идеей использовать Sprites вместо MovieClips, когда вам не нужна временная шкала.

Смежные вопросы