Что эквивалентно AS3 для MovieClip.CreateEmptyMovieClip?

У меня есть более старый код Haxe в стиле AS2, который использует flash.Lib.Current.CreateEmptyMovieClip() для создания слайд-шоу с дисковыми изображениями. Он создает новый клип для хранения каждого изображения и просто увеличивает и уменьшает каждое изображение с альфа-уровнями.

При компиляции с -swf -swf-version 8 создается файл SWF, который отлично работает в браузере.

Однако я нахожусь в процессе преобразования этого в -swf9 и обнаружил, что MovieClip больше не имеет этого метода.

Как загрузить серию изображений с помощью Haxe (в стиле AS3)?

Код, какой он стоит, находится в следующих строках:

static function main() {
  mc = flash.Lib.current;
  var clip : MovieClip;

  clip = mc.createEmptyMovieClip ("clip_000", mc.getNextHighestDepth());
  clip.loadMovie ("demo_img000.jpg");

  : : :

person paxdiablo    schedule 02.09.2010    source источник


Ответы (1)


Вы можете просто создать новый экранный объект без привязки его к клипу в библиотеке следующим образом:

var sprite:Sprite = new Sprite() // -- creates a sprite
var clip:MovieClip = new MovieClip() // -- creates a movie clip

Затем вы можете добавить его к другому экранному объекту, используя метод addChild():

myOtherClip.addChild( sprite )

Вышеупомянутая строка добавит новый клип в верхнюю часть списка отображения, как при использовании getNextHighestDepth().

Если вы хотите добавить клипу глубину между двумя другими клипами, вы можете использовать:

myOtherClip.addChildAt( movieClip, 2 ); // -- adds a clip at 2 levels up from 0

Что касается загрузки изображения, loadMovie не существует в AS3. Вам нужно использовать такие объекты Loader и URLRequest:

var loader:Loader = new Loader();
var request:URLRequest = new URLRequest( 'path_to_my_image.jpg' );
loader.addEventListener( Event.COMPLETE, onLoadComplete );
loader.load( request );

function onLoadComplete( event:Event ):void
{
     if( loader.content ){
         clip.addChild( loader.content )
     }
}
person JeremyFromEarth    schedule 02.09.2010
comment
Это одна из вещей, которая намного лучше в AS3. - person Herms; 02.09.2010
comment
Я, без сомнения, приму этот ответ, поскольку он, похоже, работает нормально (по крайней мере, предварительно). Я не понимаю одного - как указать, где спрайт / клип идет в основном клипе? Другими словами, x=mc.createTextField(name,mc.getHighestDepth(),0,300,400,20) указывает, где находится поле и его размер. Как это сделать с x = new TextField()? - person paxdiablo; 02.09.2010
comment
clip.x = 300; clip.y = 400; parentClip.addChild (клип) - person JeremyFromEarth; 02.09.2010