Actionscript 3 电影中的Flash视频问题

Actionscript 3 电影中的Flash视频问题,actionscript-3,flash,movieclip,Actionscript 3,Flash,Movieclip,我有几个视频文件在舞台上播放。我已经将它们转换成电影嘴唇,这样我就可以通过单击缩放和拖动它们。问题是我不能循环它们 然后我尝试将它们作为SWF播放对象,但在那之后,我的代码无法使用它们 下一步是使它们嵌入视频对象,以便它们自动循环,代码正常工作。此后,出现了一个问题,即对象在某个点重复 这是原始代码,因为视频是movieclips var allDraggables:Array = new Array(); var mouseHold = false; stage.addEventLis

我有几个视频文件在舞台上播放。我已经将它们转换成电影嘴唇,这样我就可以通过单击缩放和拖动它们。问题是我不能循环它们

然后我尝试将它们作为SWF播放对象,但在那之后,我的代码无法使用它们

下一步是使它们嵌入视频对象,以便它们自动循环,代码正常工作。此后,出现了一个问题,即对象在某个点重复

这是原始代码,因为视频是movieclips

    var allDraggables:Array = new Array();
var mouseHold = false;
stage.addEventListener(MouseEvent.MOUSE_UP, mUp);

function mUp(MouseEvent)
{
 mouseHold = false;
}

function draggableObject(mc)
{
 var mouseOnThisObject = false;
 allDraggables.push(mc);
 mc.addEventListener(Event.ENTER_FRAME, drag);
 mc.addEventListener(MouseEvent.MOUSE_DOWN, mDown);
 function mDown(MouseEvent)
 {
  mouseHold = true;
  mouseOnThisObject = true;
 }

 function drag(MouseEvent)
 {

  if (mouseHold == true && mouseOnThisObject == true)
  {
   mc.addEventListener(Event.ENTER_FRAME, dragger);
  }

  if (mouseHold == false)
  {
   mc.removeEventListener(Event.ENTER_FRAME, dragger);
   mouseOnThisObject = false;
  }


 }

 mc.doubleClickEnabled = true;
mc.addEventListener(MouseEvent.DOUBLE_CLICK, scaleMe);

function scaleMe(e:MouseEvent)
{


if (e.target.scaleX < 2)
{
e.target.scaleX= e.target.scaleY = 2;
}
else (e.target.scaleX= e.target.scaleY = 1);
}




 function dragger(Event)
 {
  mc.x+=(mouseX-mc.x)/3;
  mc.y+=(mouseY-mc.y)/3;

  for (var i:int=0; i<allDraggables.length; i++){
  if(mc.hitTestObject(allDraggables[i]) && getChildIndex(allDraggables[i]) > getChildIndex(mc)){
   swapChildren(allDraggables[i], mc)
   }
  }
 }
}





draggableObject(green);
draggableObject(red);
draggableObject(video1);
draggableObject(video2);
draggableObject(video3);    
var allDraggables:Array=newarray();
var mouseHold=false;
stage.addEventListener(MouseEvent.MOUSE_UP,mUp);
功能mUp(MouseEvent)
{
mouseHold=false;
}
函数DragTableObject(mc)
{
var mouseOnThisObject=false;
所有可拖动。推送(mc);
mc.addEventListener(Event.ENTER_FRAME,拖动);
mc.addEventListener(MouseEvent.MOUSE_DOWN,mDown);
函数mDown(MouseEvent)
{
mouseHold=true;
mouseOnThisObject=true;
}
函数拖动(MouseEvent)
{
if(mouseHold==true&&mouseOnThisObject==true)
{
mc.addEventListener(Event.ENTER_FRAME,dragger);
}
if(mouseHold==false)
{
mc.removeEventListener(Event.ENTER_FRAME,dragger);
mouseOnThisObject=false;
}
}
mc.doubleClickEnabled=true;
mc.addEventListener(MouseEvent.双击,缩放);
函数scaleMe(e:MouseEvent)
{
如果(e.target.scaleX<2)
{
e、 target.scaleX=e.target.scaleY=2;
}
else(e.target.scaleX=e.target.scaleY=1);
}
功能拖动器(事件)
{
mc.x+=(mouseX mc.x)/3;
mc.y+=(mouseY mc.y)/3;
对于(var i:int=0;i getChildIndex(mc)){
swapChildren(allDraggables[i],mc)
}
}
}
}
可拖动对象(绿色);
可拖动对象(红色);
可拖动对象(video1);
可拖动对象(video2);
可拖动对象(video3);

很难说你到底尝试了什么,因为你还没有提供任何代码

然而,从我的头脑来看,我认为这会起作用:

if(videoMC1.currentFrame == 250) { //put the number of the last frame of the movieclip in place of 250
   loopMC();
}
function loopMC() {
   videoMC1.stop();
   videoMC1.gotoAndPlay(1);
}

你在这里做的很简单;您检查传递/播放的当前帧,当它达到所需的数字(在您的情况下,最有可能是最后一帧)时,它会调用一个函数来重置并播放视频。

我发现一些我曾经在项目中使用过的旧代码,也许您可以尝试一下。在我的flash应用程序中,它起作用了,尽管我没有将视频放入movieclip

import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;

var nc:NetConnection = new NetConnection();

nc.connect(null);
ns = new NetStream(nc); 
ns.bufferTime = 10;

var vid:Video = new Video(1024,640);
vid.attachNetStream(ns);
addChild(vid);
ns.addEventListener(NetStatusEvent.NET_STATUS, ns_onPlayStatus)

function ns_onPlayStatus(event:NetStatusEvent):void {//loop video
    if(event.info.code == "NetStream.Play.Stop") {
        ns.seek(0);
    }
}

所以我想要的结果是,这些视频就像电影嘴唇一样,它们在循环。我用哪种方式做都无所谓。