Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3用于将MC1的暂停位置转移到MC2_Actionscript 3_Flash_Position_Adobe_Playback - Fatal编程技术网

Actionscript 3 AS3用于将MC1的暂停位置转移到MC2

Actionscript 3 AS3用于将MC1的暂停位置转移到MC2,actionscript-3,flash,position,adobe,playback,Actionscript 3,Flash,Position,Adobe,Playback,嗨,我是个新手,需要一些代码。我有三个MCs,分别是MC1、MC2和MC3。我将有3个专用按钮,将暂停一个MC的音乐,并将帧位置转移到另一个MC,然后开始播放。比如说,如果MC2正在播放,我按下MC3按钮,我希望它处于MC2(不是MC1)的暂停位置,并从MC3上的该帧继续播放,以及将视觉效果从MC2切换到MC3。这是一个多语言应用程序,所有3个MC都具有相同的帧长。换句话说,我想在不同的语言之间切换。 提前谢谢,任何帮助都会很好 编辑:到目前为止我还没有 mtlyrvult.stop(); it

嗨,我是个新手,需要一些代码。我有三个MCs,分别是
MC1
MC2
MC3
。我将有3个专用按钮,将暂停一个MC的音乐,并将帧位置转移到另一个MC,然后开始播放。比如说,如果
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正在播放,以从中获取pauseposition/currentframe。

我坚持您的代码(没有类、方法、成员、addChild等)。我没有使用Flash或SDK尝试最终草稿

我假设你有:

  • 3个对象:
    enlyrvult
    itlyrvult
    mtlyrvult
  • 3(SimpleButton、MovieClip等)对象:
    engvult
    itvult
    mtvult
  • 当我们从这里开始时,
    enlyrvult
    正在播放(如果不是:
    enlyrvult.play();
    enlyrvult.stop();

或者,你想要多少(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();
}
//添加到导入中:
导入flash.utils.Dictionary;
//在const/var部分
常量起始帧:int=1;
var dict=new Dictionary();//映射和内存
var currentTrack:MovieClip;//我们将知道谁是最后一个
initAll();
播放曲目(enlyrvult,起始帧,engvult);
函数clickHandler(e:MouseeEvent):无效{
var playheadFrame:int=currentTrack.currentFrame;//我们记住了位置
变量触发器:InteractiveObject=(e.currentTarget作为InteractiveObject);//谁杀了我?
var nextTrack:MovieClip=(dict[trigger]作为MovieClip);//下一个是谁?
resetAll();//然后重试(http://en.wikipedia.org/wiki/Sisyphus)
playTrack(nextTrack、playheadFrame、触发器);
}
函数播放轨迹(mc:MovieClip,fram:int,iObj:InteractiveObject):无效{
currentTrack=mc;
currentTrack.gotoAndPlay(fram);
iObj.mouseEnabled=false;
}
函数resetAll():void{
对于(var key:dict中的InteractiveObject){key.mouseEnabled=true;}
对于每个(var值:dict中的MovieClip){value.gotoAndStop(1);}//diff->each
} 
函数initAll():void{
dict[engvult]=enlyrvult;
dict[itvult]=itlyrvult;
dict[mtvult]=mtlyrvult;

//dict[avult]=alyrvult;//您能发布一些代码行吗,这将有助于理解您正在尝试做什么?更新的问题。谢谢您,“以及将视觉效果从
MC2
切换到
MC3
是什么意思?”意思是说无论哪一个mc被暂停,都需要“消失”为新mc腾出空间。这就是gotoAndStop(1)。mc的第一帧是空的。我想我明白了。请看我的答案。如果有什么问题,请告诉我。
// 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();
}