Новичок:Динамическая вставка кадра в видеоролик в Haxe/ActionScript3

StackOverflow https://stackoverflow.com/questions/446003

Вопрос

Допустим, у меня есть файл ресурсов, который экспортирует 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 (для создания анимации)

На данный момент я не пытаюсь создавать игры или что-то интерактивное.Мне удалось создать простую анимацию, в которой вращается фоновый спрайт (и это все).Я использовал TimerEvents для достижения этого.Но вместо этого я бы действительно хотел иметь возможность создать видеоролик и прикрепить к нему отдельные кадры, а затем воспроизвести его в цикле.

В качестве альтернативы я могу создать видеоролик и просто программно рисовать на нем кадр за кадром.(и затем, конечно, играйте в цикле)

В принципе, я хотел бы использовать 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) в любое желаемое число.

Однако это может быть не очень полезно в зависимости от того, чего вы пытаетесь достичь, но если вы немного проясните свой вопрос, я уверен, что мы сможем предложить правильное решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top