0

ステージ上でいくつかのビデオ ファイルを再生しています。クリックして拡大縮小およびドラッグできるように、それらをムービークリップに変換しました。問題は、それらをループできないことです。

次に、それらを SWF 再生オブジェクトとして作成しようとしましたが、その後、コードがそれらで動作しませんでした。

次のステップは、それらを埋め込みビデオ オブジェクトにして、自動的にループし、コードが機能するようにすることでした。その後、ある時点でオブジェクトが複製されているという問題が発生しました。

ビデオはムービークリップであるため、元のコードは次のとおりです。

    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);    
4

2 に答える 2

0

プロジェクトで使用した古いコードを見つけました。これを試してみてください。ビデオをムービークリップに入れませんでしたが、フラッシュアプ​​リでは機能しました。

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);
    }
}
于 2012-07-02T17:52:18.177 に答える
0

(まだ)コードを提供していないため、何を試したかを正確に伝えるのは難しい..

しかし、私の頭の上から、これはうまくいくと思います:

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);
}

ここで行うことは簡単です。渡された/再生中の現在のフレームを確認し、目的の数(この場合は最後のフレームである可能性が最も高い)に達すると、ビデオをリセットして再生する関数を呼び出します。

于 2012-07-02T13:29:55.227 に答える