1

こんにちは、私はフラッシュの初心者で、いくつかのコードが必要です。私は 3 人の MCMC1にとMC2と言ってもらいMC3ました。1 つの MC の音楽を一時停止し、フレーム位置を別の MC に転送して再生を開始する 3 つの専用ボタンがあります。たとえば、MC2が再生されているときにMC3ボタンを押すと、一時停止位置MC2( ではないMC1) になり、そのフレームから再生を続けMC3、ビジュアルを からMC2に切り替えることができMC3ます。これは多言語アプリで、3 つの MC はすべて同じフレーム長です。つまり、言語を切り替えたいのです。事前に感謝します。

編集:今まで私は持っています

mtlyrvult.stop();
itlyrvult.stop();

engvult.addEventListener(MouseEvent.CLICK, playMC1); 

function playMC1(e:MouseEvent):void {
    itlyrvult.stop();
    enlyrvult.gotoAndPlay(itlyrvult.currentFrame);
    itlyrvult.gotoAndStop(1);  //frame one is empty
    engvult.mouseEnabled = false;
    itvult.mouseEnabled = true;
}

itvult.addEventListener(MouseEvent.CLICK, playMC2); 

function playMC2(e:MouseEvent):void {
    enlyrvult.stop();
    itlyrvult.gotoAndPlay(enlyrvult.currentFrame);
    enlyrvult.gotoAndStop(1);    //frame one is empty
    itvult.mouseEnabled = false;
    engvult.mouseEnabled = true;
} 

これにより、ある言語から別の言語に切り替わります。今、私のクライアントは私に別の言語を教えてくれました。mtlyrvult. また、AS3 が再生中の MC をどのように認識して一時停止位置/現在のフレームを取得するかはわかりません。

4

1 に答える 1

0

私はあなたのコードに固執します(クラス、メソッド、メンバー、addChildなどはありません)。Flash や SDK を使用した最終ドラフトは試していません。

私はあなたが持っていると仮定します:

  • 3 つのムービークリップオブジェクト: enlyrvultitlyrvultmtlyrvult;
  • 3 InteractiveObject (SimpleButton、MovieClip、...) オブジェクト: engvultitvultmtvult;
  • enlyrvultここから始めると、それが再生されます (そうでない場合:enlyrvult.play();またはenlyrvult.stop();)。

itlyrvult.stop();  // or itlyrvult.gotoAndStop(1); 
mtlyrvult.stop();  // or mtlyrvult.gotoAndStop(1);

engvult.addEventListener(MouseEvent.CLICK, playMC1); 
itvult.addEventListener(MouseEvent.CLICK, playMC2); 
mtvult.addEventListener(MouseEvent.CLICK, playMC3); 

// play enlyrvult
function playMC1(e:MouseEvent):void {
    // stop them
    itlyrvult.stop();
    mtlyrvult.stop();

    // play me
    enlyrvult.gotoAndPlay(mtlyrvult.currentFrame);

    // hide them
    itlyrvult.gotoAndStop(1);    //frame one is empty
    mtlyrvult.gotoAndStop(1);    //frame one is empty

    // My trigger is out, theirs are fine
    engvult.mouseEnabled = false;
    itvult.mouseEnabled = true;
    mtvult.mouseEnabled = true;
}

// play itlyrvult
function playMC2(e:MouseEvent):void {
    // stop them
    enlyrvult.stop();
    mtlyrvult.stop();

    // play me
    itlyrvult.gotoAndPlay(enlyrvult.currentFrame);

    // hide them
    enlyrvult.gotoAndStop(1);    //frame one is empty
    mtlyrvult.gotoAndStop(1);    //frame one is empty

    // My trigger is out, theirs are fine
    itvult.mouseEnabled = false;
    engvult.mouseEnabled = true;
    mtvult.mouseEnabled = true;
} 

// play mtlyrvult
function playMC3(e:MouseEvent):void {
    // stop them
    enlyrvult.stop();
    itlyrvult.stop();

    // play me
    mtlyrvult.gotoAndPlay(itlyrvult.currentFrame);

    // hide them
    enlyrvult.gotoAndStop(1);    //frame one is empty
    itlyrvult.gotoAndStop(1);    //frame one is empty

    // My trigger is out, theirs are fine
    mtvult.mouseEnabled = false;
    engvult.mouseEnabled = true;
    itvult.mouseEnabled = true;
}

または、好きなだけ(300?)

// add to your import:
import flash.utils.Dictionary;

// in your const/var section
const STARTING_FRAME:int = 1;
var dict = new Dictionary();  // mapping and memory
var currentTrack:MovieClip;   // we will know who's last

initAll();
playTrack(enlyrvult, STARTING_FRAME, engvult);

function clickHandler(e:MouseEvent):void {
    var playheadFrame:int = currentTrack.currentFrame;                      // we remember position
    var trigger:InteractiveObject = (e.currentTarget as InteractiveObject); // who shot me ?
    var nextTrack:MovieClip = (dict[trigger] as MovieClip);                 // who's next ?

    resetAll();  // and again.. (http://en.wikipedia.org/wiki/Sisyphus)
    playTrack(nextTrack, playheadFrame, trigger);
}

function playTrack(mc:MovieClip, fram:int, iObj:InteractiveObject):void {
    currentTrack = mc;
    currentTrack.gotoAndPlay(fram);
    iObj.mouseEnabled = false;
}

function resetAll():void {
   for (var key:InteractiveObject in dict) { key.mouseEnabled = true; }
   for each (var value:MovieClip in dict) { value.gotoAndStop(1); } // diff-> each
} 

function initAll():void {
   dict[engvult] = enlyrvult;
   dict[itvult] = itlyrvult;
   dict[mtvult] = mtlyrvult;
   //dict[avult] = alyrvult; //<- new one like this: dict[trigger]=lyrMC; add as much as you can!

   for (var key:InteractiveObject in dict) {
       key.addEventListener(MouseEvent.CLICK, clickHandler);
   }

   resetAll();
}
于 2013-06-20T02:42:30.173 に答える