如何在Flash中的时间轴上跟踪音频文件的放置

我正在做一个动画项目。我不是程序员。我在使用Flash CS3。我制作了一部动画,我需要输出我的音轨的位置以供后声音人使用。录音后,我的声音给了我一个大文件,里面有我的所有音频。对于我想要的每个剪辑,我必须在音轨上擦洗到正确的位置。 现在我的动画已经完成,我已经完成了我的音频,但我需要记录它在Flash时间轴中的位置,以便我可以将它提供给我的后声音人,以便他可以在他的重建中声音编辑软件。 我想知道的是,如果有办法运行跟踪或生成一些文本文件,将执行以下操作: 列出主时间轴上音频剪辑开始的位置(关键帧)(从电影时间轴的开头返回绝对帧编号) 剪辑播放的时间长度(帧数) 关键帧上的任何注释 符号名称/音频剪辑文件名称 在该选择中播放的音频剪辑文件中的位置。 大约4年前我在Actionscript 3.0上做了一个速成课程,但那是关于我的经验,所以请你好。     
已邀请:
不是来自ActionScript,没有。时间轴上的声音是一个臭名昭着的黑盒子,充满了讨厌的陷阱,其中包括你真的无法知道时间线声音在运行时“存在”的位置。但是,这可能是您可以使用JSFL脚本执行的操作。 JSFL是一种“Javascript”,它允许您操作和检查.fla内容,以及将消息输出到跟踪窗口。 需要明确的是,在“创作时间”期间,JSFL是针对Flash创作工具本身执行的。它不是运行时语言。它不适用于swf文件。 这是关于JSFL的文档。 http://help.adobe.com/en_US/Flash/10.0_ExtendingFlash/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fe8.html     
JSFL可能是最好的方法。 您可以使用File> New ...> Flash JavaScript File创建一个新的JSFL文件。 然后,您可以使用“脚本编辑器”中的“播放”按钮运行脚本。 如果您要将脚本另存为命令,此帮助页面将显示Configuration目录的公共位置。 我还整理了一系列可能有用的教程: http://ajarproductions.com/blog/2011/02/08/creating-flash-extensions-pt1/ http://ajarproductions.com/blog/2011/02/14/creating-flash-extensions%e2%80%94pt-2/ http://ajarproductions.com/blog/2011/02/23/creating-flash-extensions-pt-3-manipulating-the-library/ http://ajarproductions.com/blog/2011/03/03/creating-flash-extensions-pt-4-ui/ http://ajarproductions.com/blog/2011/03/10/creating-flash-extensions-pt-5-swf-panels/ 这是一个示例脚本,它将在当前文档的当前时间轴中输出音频的位置:
fl.outputPanel.clear();
var dom = fl.getDocumentDOM();
fl.trace('Timeline sound for ' + dom.name);
fl.trace('-------------------');
var divider = ' tt ';
var tl = dom.getTimeline();
for(var i=0; i < tl.layerCount; i++){
    var tLayer = tl.layers[i];
    for(var j=0; j < tLayer.frameCount; j++){
        var tFrame = tLayer.frames[j];
        if(tFrame == undefined) {
            break;
        }
        if(tFrame.startFrame == j) { //only run on keyframes
            if(tFrame.soundLibraryItem != null && tFrame.soundName.length > 0) {
                var seconds = j * dom.frameRate;
                //output info
                fl.trace('layer: ' + tLayer.name + divider + 'start (frame): ' + j + 1 + divider + ' start (sec): ' + seconds + divider + 'sound file: ' + tFrame.soundName);
            }
        } else { //skip to next keyframe
            j = tFrame.startFrame + tFrame.duration - 1;
            continue;
        }
    }
}
fl.trace('-------------------');
fl.trace('Output complete.');
输出看起来像这样:
Timeline sound for testAudio2.fla
-------------------
layer: audio 2   start (frame): 31    start (sec): 36    sound file: BUMMER.WAV
layer: audio 2   start (frame): 131       start (sec): 156   sound file: COOL_F.WAV
layer: audio 2   start (frame): 411       start (sec): 492   sound file: preparetodie.wav
layer: audio 2   start (frame): 2721      start (sec): 3264      sound file: mcc_hello.mp3
layer: audio 2   start (frame): 2971      start (sec): 3564      sound file: mcc_seriously.mp3
layer: audio 2   start (frame): 3301      start (sec): 3960      sound file: point.wav
layer: audio 2   start (frame): 4321      start (sec): 5184      sound file: happy5.wav
-------------------
Output complete.
根据需要自定义。例如,如果要搜索所有时间轴或多个文档,则需要对其进行修改。     
很难确切地知道你如何设置这一切但根据你所说的我会尝试这样的事情。将以下代码放在动画时间轴的第一帧上:
var movieFrameRate:Number = 20;  //frame rate of your movie
var totalFramesOfMovie:Number = this.totalFrames;

var startingFrameOfSoundClip:Number;
var endingFrameOfSoundClip:Number;

var startingMilSecsOfSoundClip:Number;
var endingMilSecsOfSoundClip:Number;

var currentClipName:String;

function findMilSecsFromStart(startingFrameOfSoundClip:Number):Number
{
    var MilSecs:Number = (startingFrameOfSoundClip / movieFrameRate) * 1000;

    return MilSecs;
}

function findFramesFromStart(startingFrameOfSoundClip:Number):Number
{
    var frames:Number = startingFrameOfSoundClip;

    return frames;
}

function durationInFrames(startingFrame, endingFrame):Number
{
    var durationInFrames:Number = endingFrame - startingFrame;

    return durationInFrames;
}

function durationInMilliseconds(startingFrame, endingFrame):Number
{
    var durationInMilSecs:Number = ((endingFrame - startingFrame) / movieFrameRate) * 1000;

    return durationInMilSecs;
}


function collectInitialInfo():void
{
    trace("Clip Name: " + currentClipName);
    trace("Number of frames from beginning: " + findFramesFromStart(startingFrameOfSoundClip));
    trace("Time from beginning in MilSecs: " + findMilSecsFromStart(startingFrameOfSoundClip));
}

function collectFinalInfo():void
{
    trace("Duration of sound clip in frames: " + durationInFrames(startingFrameOfSoundClip, endingFrameOfSoundClip));
    trace("Duration of sound clip in milSecs: " + durationInMilliseconds(startingFrameOfSoundClip, endingFrameOfSoundClip));
    trace("----------------------------------------------------------");
} 
然后在声音片段开始的每个帧上放置以下内容,其中mySoundClip_1始终是从那里开始的声音片段的实例名称:
currentClipName = 'mySoundClip_1';
startingFrameOfSoundClip = this.currentFrame;
collectInitialInfo();
然后在声音结束的每个帧上放置以下代码:
endingFrameOfSoundClip = this.currentFrame;

collectFinalInfo();
我制作了一个时间轴,有一个方形的简单动画片段的多个实例,模仿你所描述的声音片段的位置,实例名称为mySoundClip_1,mySoundClip_2等。 我测试了它,它在输出窗口中生成以下跟踪:
Clip Name: mySoundClip_1
Number of frames from beginning: 4
Time from beginning in MilSecs: 200
Duration of sound clip in frames: 35
Duration of sound clip in milSecs: 1750
----------------------------------------------------------
Clip Name: mySoundClip_2
Number of frames from beginning: 75
Time from beginning in MilSecs: 3750
Duration of sound clip in frames: 55
Duration of sound clip in milSecs: 2750
----------------------------------------------------------
Clip Name: mySoundClip_3
Number of frames from beginning: 179
Time from beginning in MilSecs: 8950
Duration of sound clip in frames: 18
Duration of sound clip in milSecs: 900
----------------------------------------------------------
Clip Name: mySoundClip_4
Number of frames from beginning: 219
Time from beginning in MilSecs: 10950
Duration of sound clip in frames: 56
Duration of sound clip in milSecs: 2800
----------------------------------------------------------
Clip Name: mySoundClip_5
Number of frames from beginning: 289
Time from beginning in MilSecs: 14450
Duration of sound clip in frames: 32
Duration of sound clip in milSecs: 1600
----------------------------------------------------------
    

要回复问题请先登录注册