PDA

Просмотр полной версии : Loader и MovieClip это одно и тоже?


Ноябрь
21.08.2007, 03:56
В данном примере
http://www.flasher.ru/forum/showthread.php?t=79970
В итоге на экран выводится объект типа Loader, в который скачалась картинка. Можно ли делать с этим объктом все то, что можно делать с клипом?
И еще, у меня не получилось дублировать loader
var mmc:Loader = new Loader();
mmc=loader;
addChild(loader);
addChild(mmc);но получилось, что loader.x и mmc.x это одно и то же свойство.

Dima_DPE
21.08.2007, 04:01
1.http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/Loader.html
2.http://flasher.ru/forum/showpost.php?p=580922&postcount=60

Ноябрь
21.08.2007, 05:16
попробовал загрузить клип с текстовым полем, затем
loader.ft.text='text';
addChild(loader);
1119: Access of possibly undefined property ft through a reference with static type flash.display:Loader.

Dima_DPE
21.08.2007, 07:48
что такое loader? Выдерни кусок кода по больше.
Есть два варианта: 1. мувик уже лежал на таймлайне до компиляции и тогда addChild() не нужен (но это не твой случай) 2. Мувик лежит в библиотеке, тогда сначало его надо экспортировать в экшен скрипт, задав ему класс (например MovieFt) и родителя (можно flash.display.MovieClip, но не только), затем в коде, пишешь что-то вроде

var t:MovieFt=new MovieFt();
t.ft.text='text';
addChild(t);

Dendroid
21.08.2007, 12:29
Лоадер наследуется от DisplayObjectContainer (Loader -> DisplayObjectContainer -> InteractiveObject -> DisplayObject -> EventDispatcher -> Object), поэтому не совсем всё, что с мувиклипом, т.е. допустим свойства mask и filters у него уже есть, а вот useHandCursor и graphics ещё нет.

loader - это класс, реализующий загрузку. Он не содержит напрямую все объекты, загруженные в него, только ссылку на главный класс загруженного мувика (content). Т.е. обращаться нужно:
loader.content.ft.text = "123";
или если загружен битмап:
loader.content.bitmapData;

Ноябрь
21.08.2007, 20:15
1119: Access of possibly undefined property ft through a reference with static type flash.display:DisplayObject.
:confused:

Dendroid
21.08.2007, 22:52
То же самое: http://flasher.ru/forum/showthread.php?t=100175
Выбирайте: либо пишите в simple mode, либо ставьте везде операторы приведения типа.

Ноябрь
22.08.2007, 00:57
после отключения strict mode сработало.
А как сделать с операторами приведения
var mc:MovieClip = loader as MovieClip;??

etc
22.08.2007, 01:52
loader.content as MovieClip разве что, потому как loader является оберткой, а не непосредственным контентом. Не отключайте strict ни при каких обстоятельствах.

Ноябрь
22.08.2007, 02:59
Я тоже сразу об этом подумал, но в тот момент базовый класс подгружаемого клипа был потомком Sprite, и появлялась ошибка
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChild()
at main::Test/::displayImage() Затем я сделал его MovieClip и все получилось.

пс
Зачем в каждом примере, начиная с Hello world используют Sprite? Ведь даже в другой кадр перейти не удается.
А с мувиклипом в руте все замечательно работает, включая тот скрипт загрузки изображений.
Ведь если говорить о переходе от АС2 к АС3, то код в (первом) кадре соответствует коду в базовом классе, который является потомком MovieClip.