Я новичок в Flash и ActionScript 3 У меня есть 8 кодов губ для персонажа, которого я создал в разных кадрах, поэтому я хочу воспроизвести свою анимацию кадр за кадром, но в другом порядке, чтобы сформировать фразу, которую будет говорить мой персонаж Я попробовал это самостоятельно, но не добился успеха:
stop();
var tableau = new Array();
tableau[0]=2;
tableau[1]=4;
tableau[2]=1;
tableau[3]=7;
tableau[4]=8;
tableau[5]=1;
tableau[6]=7;
for(var i =0;i<tableau.length;i++){
trace(tableau[i]==this.currentFrame);
if (tableau[i]==this.currentFrame){
gotoAndPlay(tableau[i]);
trace(this.currentFrame);
}
}





Это довольно просто. Что вам нужно, так это подписаться на специальное событие, которое запускается один раз для каждого кадра, и перемещать точку воспроизведения один раз для каждого кадра в соответствии с планом.
stop();
var Frames:Array;
// This will prevent things from overlapping
// if one of the frames on the list is the
// current one and playhead will hit here
// once again (and try to execute code).
if (Frames == null)
{
Frames = [2,4,1,7,8,1,7];
addEventListener(Event.ENTER_FRAME, onFrame);
}
function onFrame(e:Event):void
{
// Get the next frame index and remove it from the list.
var aFrame:int = Frames.shift();
// If there are no more frames to show,
// unsubscribe from the event.
if (Frames.length < 1)
{
removeEventListener(Event.ENTER_FRAME, onFrame);
}
gotoAndStop(aFrame);
}
Большое спасибо за вашу помощь. Вы знаете, как я могу синхронизировать его с аудиофайлом?
@ITWorld Что вы имеете в виду под словом «синхронизировать»? Пожалуйста, объясните поподробнее.
Я хочу, чтобы когда я запустил свой код, мой персонаж будет говорить, например, он скажет «Привет», так как я могу заставить моего персонажа говорить одновременно с воспроизведением моего аудиофайла, фонема за фонемой ??
@ITWorld Я все еще не уверен, что понимаю, что вы хотите сделать, однако, возможно, это именно то, что вы ищете. Класс Звук отправляет событие SampleDataEvent.SAMPLE_DATA, которое содержит необработанные данные для звука, который должен быть воспроизведен. Вы можете извлечь эти данные (например, Google> as3 читать звуковые данные или официальная документация: help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…) и научиться считывать их для пиков.
Я хочу синхронизировать губы с воспроизводимым звуком.
@ITWorld Тогда я был прав и для этого нужно обработать аудиоданные. Возможно, вам нужно следить за пиками громкости и определять произносимые гласные. Я не профессионал в области распознавания речи и на самом деле никогда не кодировал аудиоанализ, поэтому ничем не могу вам помочь.
но я действительно благодарю вас за вашу помощь и ваше время желаю вам удачи и хорошего дня
Если вы используете «for», вы получите последний кадр перед нарисованными кадрами, потому что весь блок for будет выполнен менее чем за 10 мс, подумайте, как долго должна длиться ваша анимация (я считаю, что это не 10 мс), используйте таймер или enter_frame для изменения кадров, это поможет вам увидеть всю последовательность в анимации