Flash Ripper RSS Readers

MovieClipLoader, который не умел автоматически превращать объект в строку, и просто тихо молчал: страшная сказка для будущих внучат

Как вы знаете, класс MovieClipLoader был создан для продвинутой загрузки всего на свете в мувиклипы. Он пришел на смену методу MovieClip.loadMovie, потому что тот не умел контролировать прогреcc — вот и появился новый класс и его метод loadClip.

Но вместе с ним возникли и новые проблемы: метод MovieClipLoader.loadClip не умел автоматически приводить тип данных своего первого аргумента — адреса загружаемого объекта.

Короче говоря, если путь загружаемой картинки был задан строкой, но она каким-то образом была приведена, например, к типу Object, то метод не срабатывал и возвращал false без объяснения причин. В то же время старый добрый метод MovieClip.loadMovie проглатывал такие (не)приведенные строки без всяких проблем.

Например, в этом коде работала вторая строка, а третья — нет:

var imgPath:String = Object("http://www.helpexamples.com/flash/images/image1.jpg");
mcImage.loadMovie(imgPath);
mcLoader.loadClip(imgPath, mcImage);

Чтобы третья начала отрабатывать, нужно было привести тип аргумента к String:

mcLoader.loadClip(String(imgPath), mcImage);

В сигнатуре обоих методов требуемый тип данных был указан одинаково как String — но для MovieClipLoader.loadClip это требование было жесткое, а для его старшего брата — нет.

Внимательный читатель спросит: а какого вы вообще строки в объекты конвертировали и потом еще жаловались?

Иногда это бывало так: использовались адреса картинок, вытащенные их XML-файла с помощью удобного выражения XPath. В результате этой операции адреса, фактически являвшиеся строками, становились объектами и хорошо работали до тех пор, пока использовалься метода loadMovie.

Но как только было решено запрелоадить все на свете с помощью MovieClipLoader.loadClip — -- вдруг загрузка переставала работать, пока кто-то не догадался привести тип первого аргумента метода к типу String.

Пройдут годы, вы покажете эту статью внукам со словами: вот видите, как тревожно нам до AS3 жилось. Методы молча лажались и даже не пикали. То ли дело теперь — с такими-то профайлерами да дебаггерами!

Писал Rost, 15 Август 2007 17:39

Найдены баги:

Дык. XPath классный парсер для AS2. Он в основном узлы(Object) и возвращает.
А в loadMovie, по не надобности на то время, не проверяли типизацию данных.
Кстати в AS3 тоже зачастую(даже постоянно) при распарсивании данных приходится приводить к нужному типу, ато и до багов не далеко ((.

Pride_Conan - 15 Август 2007 18:17

Ага. Просто в AS3 (читай - AVM2) тебе такую ошибку не дадут пропустить, если пользуешься дебаг-версией Flash Player 9 :)

Rostislav Siryk - 15 Август 2007 18:28

Дык. XPath классный парсер для AS2.
не совсем там всё класно, но это долгий спор

- 15 Август 2007 18:39

Не все так гладко и в AS3. Сколько только автоматическом приведение типов, только as и is и спасают парой.

Dima - 16 Август 2007 2:37

спасибо за то что просвятили, это мигом решило несколько проблем:)

картонка - 16 Август 2007 4:45

У меня недавно такая феня была в флекс проекте. ХМЛ парсился в Object и надобыло mx.controls.Image дать ссылку на картинку=)

Спасает (и всегда спасал) toString();

Nirth - 16 Август 2007 10:03

toString.com - решение ваших проблем :)

Rostislav Siryk - 17 Август 2007 19:20

Имея привычку всегда правильно использовать типы, ошибки возникать не будут. Строгая типизация есть норма для серьезных языков.

Sanych - 19 Август 2007 1:14

Эх, Саныч, мне бы вашу веру в строгую типизацию.

Rostislav Siryk - 23 Август 2007 3:30



Это запись из категории 'Debug'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-30, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-25, Articles-26, AS3-52, Books-7, Business-3, Cairngorm-2, CI-1, Classes-10, Coding-30, Community-113, Components-19, Contests-28, Cool-Job-5, Debug-18, Design-26, Development-84, EMO-1, Events-13, Extensions-2, FAQ-8, FDS-1, Flash and html-5, Flash Player-35, Flash Updates-8, Flash-scene-1, flash10-4, FlashLite-2, Flex-30, Flex 2-80, Flickr-1, FMS-1, FPUG-46, frameworks-1, Games-11, Good Job!-35, HaXe-14, Health-2, Humor-10, Ideas-13, JavaScript-1, Job-26, JSFL-8, Links-2, Linux-1, Maps-1, Math-8, Money-11, MXML-1, Open Source-15, Optimization-2, Patterns-2, Personalities-27, Politics-1, Preloading-3, Productivity-9, PureMVC-10, Pv3d-1, Rafpug-4, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-8, Silverlight-5, Sound-3, Strategy-120, Tamarin-1, Tools-113, Training-2, Trash-8, URAFPUG-13, Urgent-1, Usability-6, Video-6, VoIP-5, Wallop-1, Wishlist-2, Архив всех записей (большой)

За последние месяцы:

Июл 2008: Международная встреча разработчиков URAFPUG завершена, URAFPUG - трансляция студии Flex-фреймворка Mate, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн

Май 2008: Если 3D, то по-взрослому: официальный запрос в Adobe по поводу контроля над мип-маппингом. Нужна ваша поддержка!, В этом году «Russian Flash Awards» пройдет в «космическом стиле», весь Май

Апр 2008: Программирование под флэш платформу. Cтатья (местами спорная), Advanced Flash Components бесплатно раздает все свои AS2-компоненты, весь Апр

Мар 2008: Зарплаты программистов в 2007 году, FlashPhone как технология года? Технология года? В Рунете?, весь Мар

Фев 2008: ЙА ФПУГ — регистрация на первую встречу UAFPUG продолжается, Закулисы Flex и секрет успеха опенсорс-проекта, весь Фев





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)