Flash CS5: AS3 - импортировать SWF для воспроизведения в течение X секунд? - PullRequest
0 голосов
/ 11 апреля 2011

Мне нужно, чтобы в начале была SWF-загрузка, но я не хочу проигрывать последние 3 секунды видео.

Может кто-нибудь помочь мне с кодом, который в основном будет иметь мойSWF играть в течение «х» секунд?

Вот что у меня есть до сих пор .. В настоящее время он настроен на воспроизведение SWF, но вычесть из него «х» секунд, но по какой-то причине это, кажется, неработа

var mySwf:MovieClip;
var reducedTotalFrames:int;

var clipLoader:Loader = new Loader();
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
clipLoader.load(new URLRequest("schoolintro.swf"));

function loadComplete(e:Event):void
{
     mySwf = LoaderInfo(e.currentTarget).content as MovieClip;

     var totalFrameCount:int = mySwf.currentScene.numFrames;

     var secondsToSubtract:int = 3;

     var threeSecondFrameCount:int = (stage.frameRate * secondsToSubtract);

     reducedTotalFrames = totalFrameCount - threeSecondFrameCount;

     stage.addEventListener(Event.ENTER_FRAME, onRender);

     stage.addChild(mySwf);


}

function onRender(e:Event):void
{
     if(mySwf != null && mySwf.currentFrame >= reducedTotalFrames){
          //This is the end of the SWF with 3 seconds trimmed off. Here we can stop play
          stage.removeEventListener(Event.ENTER_FRAME, onRender);
          mySwf.stop();
          //doSomethingElse();
     }
}

Ответы [ 2 ]

0 голосов
/ 11 апреля 2011

Попробуйте некоторую базовую отладку, например, поместите операторы трассировки в код внутри onRender, чтобы убедиться, что он вызывается, чтобы убедиться, что ссылка mySwf работает правильно (например, отслеживание mySwf.currentScene.numFrames и, если его 0, вы знаете, вы не ссылаетесь на свой SWF должным образом или SWF не основывается на фреймах). Если SWF-файл не основан на кадрах, то у вас возникнут реальные проблемы, связанные с управлением или даже выполнением каких-либо действий с этим, поскольку вся анимация / действие, выполняемое внутри загруженного SWF-файла, основывается на коде.

0 голосов
/ 11 апреля 2011

Я думаю, вам просто нужно изменить эту строку с

var threeSecondFrameCount:int = (stage.frameRate * secondsToSubtract);

до

var threeSecondFrameCount:int = (stage.frameRate / secondsToSubtract);

не уверен, что это то, что вы хотите или нет.

...