PDA

Просмотр полной версии : loadBytes()


riden
24.12.2006, 00:10
var url:URLRequest = new URLRequest("movie.swf");
mc_ldr = new URLLoader();
mc_ldr.dataFormat = URLLoaderDataFormat.BINARY;
mc_ldr.load(url);

var ldr:Loader = new Loader();
ldr.loadBytes(mc_ldr.data);

stage.addChild(ldr);

После добавления Loader-а мы видим проигрывающийся мувиклип (movie.swf). И мы можем дальше создавать экземпляры Loader и добавлять их к stage.

var ldr2:Loader = new Loader();
ldr2.loadBytes(mc_ldr.data);
ldr2.x = 100;
stage.addChild(ldr2);

var ldr3:Loader = new Loader();
ldr3.loadBytes(mc_ldr.data);
ldr3.x = 200;
stage.addChild(ldr3);
и так далее...
Мы получаем настоящее дублирование клипа. Я уже было обрадовался... Но ldr.content возвращает null. И я не могу получить доступ к экземпляру MovieClip, его свойствам и методам. То есть я не могу остановить, воспроизвести с нужного места нужный мне мувиклип. Возможно ли как нибудь, из массива байтов(mc_ldr.data) создать MovieClip? Есть ли какое нибудь решение? Loader, содержащий в себе байты, по сути содержит мувиклип, который и проигрывается после добавления на сцену.

Nirth
24.12.2006, 03:02
Мувиклип сделан для какого плеера? (с каким ActionScript?)

riden
24.12.2006, 03:41
Action Script 3 разумеется. То есть я загружаю AVM2 (который при загрузке Loader.load() обычно инициализируется в экземпляр класса MovieClip).
Проблема не в загрузке, доступе к отдельному клипу. Обращаю внимание еще раз. Я загружаю клип один раз, а затем дублирую его используя свойство data:ByteArray и метод loadBytes().
var ldr2:Loader = new Loader();
ldr2.loadBytes(mc_ldr.data);
Читайте внимательней.

Nirth
24.12.2006, 14:39
Можешь выложить проект? чтобы было на чем эксперементировать.

riden
24.12.2006, 18:13
Ну вот я сделал пример.

Сначала идет загрузка(без прелоадера), а затем можно дублировать.

Nirth
24.12.2006, 18:58
при попытке импортировать выдало кучу ошибок, выложи готовый FlashDevelop или Flex проект, или в чем ты разрабатываешь приложения.

riden
24.12.2006, 19:01
Flash 9, там лежат as-файлы, fla-файл, и лежит готовый SWF.

Nirth
24.12.2006, 19:04
Ясно, тогда жди мне надо скачать девятку у адоба.

riden
24.12.2006, 19:25
Во Flash нужно отключать Strict mode (у меня отключен), иначе выдаются ошибки.

Вот я убрал динамичный класс. Ошибок теперь не выдает. Может сейчас во Flex-е будет компилироватся.

etc
24.12.2006, 19:42
riden, как раз наоборот нужно включать.

riden
24.12.2006, 21:40
riden, как раз наоборот нужно включать.
Нужно было отключать, теперь - все равно, так как класс не является динамичным (я переделал - example_2.rar).

riden
26.12.2006, 02:20
Возможно ли как нибудь, из массива байтов(mc_ldr.data) создать MovieClip? Есть ли какое нибудь решение?
Похоже, что здесь не может быть решений. И мы по прежнему, в AS 3.0, не можем дублировать динамически загружаемые MovieClip-ы. Или я ошибаюсь? Ответьте профи.

etc
26.12.2006, 02:23
И мы по прежнему, в AS 3.0, не можем дублировать динамически загружаемые MovieClip-ы. Или я ошибаюсь?
Можно.

riden
26.12.2006, 02:28
Можно.
Подскажи пожалуйста каким образом. Аналог duplicateMovieClip() из tips and tricks работает:
аналогично методу duplicateMovieClip из AVM1
То есть он не дублирует динамически загруженные клипы, я проверял.

morgenshtern
19.05.2009, 04:51
__etc, а можно поподробнее? )

etc
19.05.2009, 07:45
Прочтите название темы. Плюс ещё new ((mc as Object).constructor).

badun
23.05.2009, 16:29
надо дождаться загрузки, потом уже смотреть loader.content