Новичок:Динамическая вставка кадра в видеоролик в Haxe/ActionScript3
-
22-07-2019 - |
Вопрос
Допустим, у меня есть файл ресурсов, который экспортирует mc1
с 4 рамками в нем.Я хотел бы создать новый MovieClip
и вставляйте фреймы, подобные этому:
mc2:flash.display.MovieClip = new flash.display.MovieClip()
mc1.gotoAndStop(2);
mc2.gotoAndStop(1);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(1);
mc2.gotoAndStop(2);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(2);
mc2.gotoAndStop(3);
mc2.currentFrame = mc1.currenctFrame
mc1.gotoAndStop(4);
mc2.gotoAndStop(4);
mc2.currentFrame = mc1.currenctFrame
[редактировать] Более подробная информация
Я не использую Flash IDE.Я использую:
- Inkscape (для генерации SVG)
- swfmill (для создания файлов ресурсов)
- Haxe (для создания анимации)
На данный момент я не пытаюсь создавать игры или что-то интерактивное.Мне удалось создать простую анимацию, в которой вращается фоновый спрайт (и это все).Я использовал TimerEvent
s для достижения этого.Но вместо этого я бы действительно хотел иметь возможность создать видеоролик и прикрепить к нему отдельные кадры, а затем воспроизвести его в цикле.
В качестве альтернативы я могу создать видеоролик и просто программно рисовать на нем кадр за кадром.(и затем, конечно, играйте в цикле)
В принципе, я хотел бы использовать ActionScript для генерации контента вместо XML swfmill (не simple
диалект, simple
это прекрасно).Поскольку я новичок, я не знаю, какую еще информацию я могу вам предоставить.Поэтому, пожалуйста, скажите мне, могу ли я предоставить какие-либо другие детали?
Решение
Без Flash IDE нет особого смысла использовать gotoAndStop() и т.д.
Поскольку вы не можете добавлять разные ресурсы в разные фреймы, вам следует добавить их все в виде слоев с помощью addChild(assetToAdd) и установить для всех, кроме одного, значение visible = false .Затем добавьте простую функцию, подобную этой:
function showFrame(num:int):void
{
for (var i:int = 0; i < numChildren; i++)
{
if (i == num)
{
getChildAt(i).visible = true;
}
else
{
getChildAt(i).visible = false;
}
}
}
Другие советы
Я не знаю удобного способа сделать то, что вы пытаетесь сделать.Ваш пример не будет работать, потому что currentFrame - это свойство, доступное только для чтения, также все, что оно возвращает, - это целое число, представляющее номер кадра, а не данные, составляющие фактический кадр.
Мое предложение, если вам нужно динамически переставлять кадры, заключалось бы в том, чтобы обернуть этот конкретный видеоролик в пользовательский класс, который преобразует gotoAndPlay(x) в любое желаемое число.
Однако это может быть не очень полезно в зависимости от того, чего вы пытаетесь достичь, но если вы немного проясните свой вопрос, я уверен, что мы сможем предложить правильное решение.