Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Error 1034: Ошибка типа Coercion (http://www.flasher.ru/forum/showthread.php?t=175368)

iliacmd 15.02.2012 16:40

Error 1034: Ошибка типа Coercion
 
Всем привет! Помогите разобраться.

С данной траблой сталкивался не один раз, но в данный момент решил разобраться с ней раз и на всегда.

Проблема такая:

Есть swf1 с типом MovieClip1, внутри это клипа есть клип clip_mc с типом MovieClipBar. Есть также swf2 с типом MovieClip2. Я загружаю swf1 в swf2, и пытаюсь внутри swf2 создать еще один объект с типом MovieClip1 и получаю такую ошибку

Код:

TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать flash.display::MovieClip@32770c81 в MovieClipBar
В чем может быть проблема?

Srednas 15.02.2012 16:49

Цитата:

Сообщение от iliacmd (Сообщение 1063086)
В чем может быть проблема?

Была такая тема. А в этой вы досадуете.. Да похоже старая проблема.

Может в справке найдете чего, что поможет.

iliacmd 15.02.2012 17:51

справка как-то не очень помогает :(

мне непонятно почему при создании нового экземпляра загруженного клипа, все клипы внутри него имеющие вполне определённый тип создаются как MovieClip'ы?

NikolyA 15.02.2012 18:10

давай код свой сюда выкладывай

MikroAcse 15.02.2012 18:18

Ты хочешь преобразовать MovieClip в MovieClipBar, попробуй делать так:
Код AS3:

YourMovieClipBar as MovieClip


dimarik 15.02.2012 18:20

Вероятно, в родительском аппдомене ничего не знают о классе MovieClipBar. Попробуйте загрузить swf1 в текущий аппдомен swf2.
Либо (в контексте swf2)
Код AS3:

const o:Object = new swf1.loaderInfo.applicationDomain.getDefinition("MovieClip1")();

Добавлено через 3 минуты
Цитата:

Сообщение от MikroAcse (Сообщение 1063110)
Ты хочешь преобразовать MovieClip в MovieClipBar, попробуй делать так:
Код AS3:

YourMovieClipBar as MovieClip


Откуда вы, юноша? Это не преобразование, а приведение. И попробовать привести к MovieClipBar можно с точностью до наоборот.

Код AS3:

const foo:MovieClipBar = bar as MovieClipBar;
if (!foo)
    // cast failed


MikroAcse 15.02.2012 18:25

Цитата:

Это не преобразование, а приведение.
Ой, перепутал. С кем не бывает?

iliacmd 15.02.2012 20:24

Вложений: 1
закатал простой пример

iliacmd 15.02.2012 20:29

нет, мне не нужно приводить к MovieClipBar, клип с данным классом находится внутри класса swf1, я создаю экземпляр swf1, вот только в самом клипе swf1 не создается объект с типом MovieClipBar, а почему-то создается обычный MovieClip

dimarik 16.02.2012 10:13

Прости, дружище! CS5.5 у меня нет.

iliacmd 16.02.2012 10:25

Вложений: 1
сори, забыл про разницу в форматах :)

dimarik 16.02.2012 12:42

Странновато. Уберите галку с Automatically declare stage instances.

iliacmd 17.02.2012 16:24

спасибо, действительно в моем примере это работает. У меня есть более сложный проект, там идет наследование от классов которые подгружаются из внешних библиотек и там почему-то такая штука не прокатывает (пока не могу понять почему). В целом я нашел альтернативное решение, хотя оно скорее всего подойдет не всем, немного позже выложу.

dimarik 17.02.2012 16:38

Разберитесь с работой ApplicationDomain, SecurityDomain

iliacmd 17.02.2012 19:42

Вложений: 1
я с имитировал ситуацию как в основном проекте, т.е добавил общую подключаемую библиотеку. Теперь в обоих флешках есть клипы наследующие MovComponent из подключаемой библиотеки. В результате снова вылетает 1034

по поводу ApplicationDomain, может что посоветуешь почитать? Так все вроде просто, можно загрузить в текущий домен и классы будут перезаписываться или в отдельный тогда классы изолированы друг от друга.

есть отличная статья у senocular http://www.senocular.com/flash/tutor...ontentdomains/, правда мой английский хромает на обе ноги и я там не во всем разобрался

iliacmd 20.02.2012 14:31

у кого-нибуть есть мысли в чем тут может быть дело?


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

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