2010-09-02 3 views
1

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

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

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

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

код, для чего это стоит, вдоль этих линий:

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

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

    : : : 

ответ

7

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

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) 
    } 
} 
+1

Это одна из самых приятных в AS3 вещей. – Herms

+0

Я, без сомнения, соглашусь с этим ответом, поскольку он работает нормально (по крайней мере, предварительно). Одна вещь, которую я не получаю - как вы указываете, где спрайт/клип находится в главном клипе? Другими словами, 'x = mc.createTextField (name, mc.getHighestDepth(), 0,300,400,20)' указывает, куда идет поле, и его размер. Как вы это делаете с помощью только 'x = new TextField()'? – paxdiablo

+0

clip.x = 300; clip.y = 400; parentClip.addChild (клип) – JeremyFromEarth

Смежные вопросы