package {
import org.papervision3d.objects.DisplayObject3D;
import flash.events.Event;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import org.papervision3d.core.proto.DisplayObjectContainer3D;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.materials.VideoStreamMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.DAE;
[SWF(width=640,height=480,frameRate=30,backgroundColor=0x0)]
public class Proyecto extends PV3DARApp {
private static const PATTERN_FILE:String = "datos/marcador.pat";
private static const CAMERA_FILE:String = "datos/camera_para.dat";
private var isPlaying: Boolean = false; //Funcion Añadida
private var proyector:DAE;
protected var videoMat:VideoStreamMaterial;
protected var objectsContainer:DisplayObject3D;
protected var quality:uint = 16;
protected var netConnection:NetConnection;
protected var video:Video;
protected var netStream:NetStream;
public function Proyecto()
{
addEventListener(Event.INIT, onInit);
init(CAMERA_FILE, PATTERN_FILE);
}
private function onInit(e:Event):void
{
var customClient:Object = new Object();
customClient.onMetaData = metaDataHandler;
netConnection = new NetConnection();
netConnection.connect(null);
netStream = new NetStream(netConnection);
netStream.client = customClient;
netStream.play("videos/barber.flv");//aqui se pone la ubicacion del video
netStream.pause();// se le añadio esta linea para que la animacion no arrancara desde el inicio sino desde la captura del maker
netStream.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
//Se crea un contenedor para el stream de video
video = new Video();
video.smoothing = true; //suavizada el video
//video.scaleY = -1; //flip
video.attachNetStream(netStream);
//Crea el material que contenga el video
videoMat = new VideoStreamMaterial(video, netStream, true, true);
videoMat.doubleSided=true; //activandolo se ve en el plano frontal y posterior
var mats:MaterialsList = new MaterialsList();
mats.addMaterial(videoMat, "video"); //aqui es el nombre del material del dae donde estará el video
proyector = new DAE(false, null, false);// controla la animacion del dae, el primer true es para activar la animacion y el ultimo para el loop (supuestamente)
proyector.load('modelados/teatro3.dae', mats);//aqui carga el dae con descripcion de materiales
proyector.scale =5;
proyector.rotationX = 90;
proyector.rotationZ = 90;
proyector.z += 10;
proyector.y = -10;
proyector.x = 10;
proyector.play();
_baseNode.addChild(proyector)
addEventListener(Event.ENTER_FRAME, _update);// no quiere
}
override protected function _onEnterFrame(e:Event = null):void
{
super._onEnterFrame(e);
if(capturado == true){
netStream.resume();
}
else{
netStream.pause();
}
}
private function metaDataHandler(infoObject:Object):void
{
trace('metaDataHandler= ',infoObject);
}
private function statusHandler(eventObject:Object):void
{
if(eventObject.info.code == "NetStream.Play.Stop")
{
// loop video
netStream.seek(0);
}
}
}
}