AS3在Flash IDE中交换深度而不破坏动画片段

时间:2015-02-27 08:56:07

标签: actionscript-3 flash flash-cs5 flash-cs6

我有两个动画片段,一个在顶部,一个在底部。顶部设置为第二帧。我将它移动到下一帧的z轴底部,对于剩余的帧,它播放所有帧,就像它已经重置而没有任何代码(就像我没有告诉它gotoAndStop(2))。

图片示例:http://i.imgur.com/mQ8f5uT.gif(很难通过帧速率判断,但是当我将其移动到下方时,暗绿框开始播放,好像我没有设置它的帧一样)

我知道当我用setChildIndex编码深度交换时没有那个问题,但是动画丢失了。

如果您想知道,这是一个更大的移动角色精灵动画的简化问题,我想在动画中交换影片剪辑的深度而不重置深度变化下的影片剪辑。所以我并不是真的在寻找一个解决方案本身,除非有一个很好的设计解决方案,而不是乐队援助“hack。”

1 个答案:

答案 0 :(得分:1)

我想我完全不明白你的问题。无论你用它做什么,MovieClip都会继续播放或继续停止,即使它已从场景中移除。我做了一个简单的例子,表明MovieClip状态不受深度变化的影响。

工作的SWF在这里测试:http://zdg.ru/tmp/updown.swf

代码是:

import flash.events.MouseEvent;

var is_playing:Boolean = true;
btn_toggle.addEventListener(MouseEvent.CLICK, doToggle);
btn_updown.addEventListener(MouseEvent.CLICK, doUpdown);

function doToggle(evt:MouseEvent) {
    if (is_playing) mv_test.stop(); else mv_test.play();
    is_playing = !is_playing;
}

function doUpdown(evt:MouseEvent) {
    var tmp:int = getChildIndex(mv_block);
    setChildIndex(mv_block, getChildIndex(mv_test));
    setChildIndex(mv_test, tmp);
}