Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Управление загруженными внешними swf (http://www.flasher.ru/forum/showthread.php?t=124678)

Grumble 06.05.2009 01:41

Управление загруженными внешними swf
 
Привет всем,
Пытаюсь в свой ролик загрузить swf извне:
Код AS3:

    var url:String = "ai2.swf";
    var loader:Loader = new Loader();
    var request:URLRequest = new URLRequest(url);
    loader.load(request);
    container.addChild(loader);

container это экземпляр пустого movieclip в который я хочу загружать внешний мувик.
Проблемы две:
мувик загружается, изначально позиционируется по координам container - всё как надо, но через 2-3 секунды почему-то вылетает из этих границ и живет своей жизнью. Хочется как-то это исправить, то есть мне надо,чтобы внешний мувик вне зависимости от его размеров,загружался в определенную координату на сцене и был заданных размеров. Разве не достаточно это определить в пустом container куда загрузится мувик?
вторая проблема..то есть вопрос, как мне управлять загруженными мувиками? При загрузке они сразу начинают проигрываться, и не реагируют на container.stop()..

Gaen 06.05.2009 03:12

Вы грузите мувик не в container, а в loader. Тоесть, чтобы обратиться к загруженному мувику, нужно обратиться к loader, точнее к loader.content. Для него же задавать координаты и размеры, у него же вызывать stop.

В вашем случае иерархия получается такая:
Код:

+ мувик, в котором написан код
|
+--+container
  |
  +--+loader
      |
      +--content (заруженный мувик)

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

Grumble 06.05.2009 13:57

Спасибо. Попробовал обратиться к loader.content, получил 1061: Call to a possibly undefined method stop through a reference with static type flash.display:DisplayObject.
В Гуглу накопал,что надо делать что-то типа этого:
Код AS3:

var movie:*=loader.content;
var clip:MovieClip=movie;
clip.stop();

попробовал и получил такое:
TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::AVM1Movie@3e7c509 to flash.display.MovieClip.
at playertest1_fla::MainTimeline/completeHandler()
Это нормально?:)

mre 06.05.2009 13:59

Видимо, подгружаемый swf написан не на AS3.

Distorn 06.05.2009 14:47

Цитата:

Сообщение от Grumble (Сообщение 817979)
Спасибо. Попробовал обратиться к loader.content, получил 1061: Call to a possibly undefined method stop through a reference with static type flash.display:DisplayObject.
В Гуглу накопал,что надо делать что-то типа этого:
Код AS3:

var movie:*=loader.content;
var clip:MovieClip=movie;
clip.stop();


По-моему, лучше так:
Код AS3:

var movie:MovieClip = loader.content as MovieClip;
movie.stop();

либо так:
Код AS3:

var movie:MovieClip = MovieClip(loader.content);
movie.stop();

Но, если свфка под AVM1, то это естесственно не поможет )

Grumble 06.05.2009 16:02

мда..загружаемый swf это сконвертированный avi.. :(


Часовой пояс GMT +4, время: 08:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.