Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   вопрос по addChild (http://www.flasher.ru/forum/showthread.php?t=75868)

fishbounce 21.02.2006 19:18

вопрос по addChild
 
если:
var s:Sprite = new Sprite();
var u:Box= new Box(); // например Box
то
u.addChild(s);
вызывает ошибку
cannot convert flash.display::Sprite@854e7e6 to mx.core.IUIComponent.
Хотя, по идее, у метода addChild(val: DisplayObject).

Понятно, что Sprite не ипмплементирует mx.core.IUIComponent, а, как видно, контейнер Box этого хочет.

Но как тогда быть, если я хочу "прибить" Sprite instance к Box instance?
(например, нарисовать че-нить в Sprite программно, а потом засунуть в Box).

BlooDHounD 22.02.2006 11:53

Box - должен быть наследован от Sprite

fishbounce 22.02.2006 13:58

в том то и дело, что Box - это mx.containers.Box, который наследуется от Container -> UIComponent -> Sprite.
Но, факт есть, возникает вышеописанная ошибка.

UP!

7thsky™ 22.02.2006 17:12

в классе mx.core.Container метод addChild перегружен - не смотря на то что в документации он принимает DisplayObject, скорее всего addChild (child:IUIComponent) или ошибка возникает внутри переписанного метода, где пытаются привести аргумент к IUIComponent

fishbounce 22.02.2006 17:19

ок, это понятно.
Но как тогда быть?
Т.е. я не могу добавить объект Sprite, MovieClip... (все , что выше UIComponent'ов в цепочке наследования) как child в какой-нибудь UIComponent.
В принципе, вопрос был в этом.
Мне кажется, что такая ситуация "не есть хорошо")

fishbounce 22.02.2006 17:23

такая ситуация наблюдается только с instance'ами наследников mx.core.Container.
C наследиками UIComponent (например, Button) все нормально

7thsky™ 22.02.2006 20:34

Цитата:

Сообщение от tyombria
ок, это понятно.
Но как тогда быть?
Т.е. я не могу добавить объект Sprite, MovieClip... (все , что выше UIComponent'ов в цепочке наследования) как child в какой-нибудь UIComponent.
В принципе, вопрос был в этом.
Мне кажется, что такая ситуация "не есть хорошо")

в принципе это логично, так ты имеешь библиотеку компонентов, нормально что компонент может добавить в себя только компонент

Antares 23.02.2006 00:12

На уровне UIObject это реализовано так:

1. Каждый компонент -- визуальный класс (наследним мувиклипа).
2. Создание включает в себя либо аттач, либо createEmptyMovieClip c Object.registerClass

Поэтому не вижу причин не цеплять простейшие классы. Посмотрю позднее, сейчас некогда.

7thsky™ 23.02.2006 00:45

Цитата:

Сообщение от Antares
На уровне UIObject это реализовано так:

1. Каждый компонент -- визуальный класс (наследним мувиклипа).
2. Создание включает в себя либо аттач, либо createEmptyMovieClip c Object.registerClass

Поэтому не вижу причин не цеплять простейшие классы. Посмотрю позднее, сейчас некогда.


Миша, ты про что это :) этож АС3 :)

Antares 23.02.2006 01:52

А ты думаешь внутри везде все другое?:) У меня вот нет 100% уверенности


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

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