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

Я сделал видео во флэш-памяти, которое каким-то образом испортилось, поэтому fla больше не используется.Вместо того, чтобы переделывать видео, я хотел бы просто оторвать конец .swf, который я опубликовал, а затем, возможно, просто воспроизвести второй .swf сразу после его окончания (с кнопками воспроизведения и ссылкой на определенный сайт)

У меня такой вопрос: могу ли я в конце сократить размер .swf примерно на 3 секунды?

1 Ответ

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

Предполагая, что это анимация на основе кадров или SWF, при загрузке SWF вы можете получить общее количество кадров, используя MovieClip (mySwf) .currentScene.numFrames.Таким образом, вы могли бы сбрить 3 секунды, чтобы определить, сколько кадров будет составлять 3 секунды, исходя из текущей частоты кадров, а затем в обратном вызове ENTER_FRAME проверьте currentFrame и действуйте, когда вы обнаружите, что он равенкадров).Код выглядит так:

* Примечание: код отредактирован, см. Комментарии *

var mySwf:MovieClip;
var reducedTotalFrames:int;

var clipLoader:Loader = new Loader();
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
clipLoader.load(new URLRequest("http://www.mysite.com/mySwf.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);

     mySwf.gotoAndPlay(1);
}

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();
     }
}

Код не в моей голове, но, по крайней мере, еслион уже не работает как есть, у вас должно быть достаточно четкое понимание концепции, чтобы заставить ее работать или реализовывать ее по своему усмотрению.

...