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

Скажем, у меня есть файл ресурсов, который экспортирует 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. Но вместо этого я бы очень хотел иметь возможность создать MovieClip и прикрепить к нему отдельные кадры, а затем воспроизвести его в цикле.

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

В основном я хотел бы использовать ActionScript для генерации контента вместо XML swfmill (не диалект simple, simple в порядке). Поскольку я новичок, я не знаю, какую еще информацию я могу вам дать. Скажите, пожалуйста, могу ли я предоставить какие-либо другие подробности?

[UX] Категории и настройки внешнего вида Flash-сообщений
[UX] Категории и настройки внешнего вида Flash-сообщений
Flash-сообщение - это обычный веб-элемент, используемый для отправки короткого сообщения пользователю. Например, на странице входа в систему может...
2
0
4 255
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Мое предложение, если вам нужно динамически переставлять кадры, заключалось бы в том, чтобы обернуть этот конкретный MovieClip в специальный класс, который переводит gotoAndPlay (x) на любое число, которое вы хотите.

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

Ответ принят как подходящий

Без 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;
       }
    }
}

Спасибо! Могу ли я добавить один и тот же актив с разными преобразованиями (конечно, с разными фреймами)?

muhuk 15.01.2009 13:29

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

Iain 15.01.2009 16:52

Более легкий способ: for (var i: int = 0; i <numChildren; i ++) {getChildAt (i) .visible = i == num; }

Dugh 28.01.2016 22:44

Другие вопросы по теме