Просмотр полной версии : Loader и MovieClip это одно и тоже?
В данном примере
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
попробовал загрузить клип с текстовым полем, затем
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;
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, либо ставьте везде операторы приведения типа.
после отключения strict mode сработало.
А как сделать с операторами приведения
var mc:MovieClip = loader as MovieClip;??
loader.content as MovieClip разве что, потому как loader является оберткой, а не непосредственным контентом. Не отключайте strict ни при каких обстоятельствах.
Я тоже сразу об этом подумал, но в тот момент базовый класс подгружаемого клипа был потомком 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.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.