проблема здесь в том, что Tree
- это класс, расширяющий класс Sprite, уже " не может преобразовать Tree @ c8f0301 "
BuildingSprite
- другой классрасширяющий спрайт.Думайте об этом как о дереве, где Sprite является стволом, а классы являются ветвями, в то время как оба относятся к своему первоначальному классу Sprite, они не узнают друг друга.
что вам нужно сделать, этопоказать, как они связаны.путем преобразования дерева в спрайт и спрайта в BuildingSprite в два этапа.
var mySprite:BuildingSprite = (new assetClass() as Sprite) as BuildingSprite ;
Если вы расширили класс Sprite дополнительными функциями в своем классе дерева, вы потеряете эти функции.или столкнуться с некоторыми проблемами, но если вы хотите использовать только графику, это следует сделать.
в примечании, использование доступных библиотек может ускорить процесс.Так что, если у вас есть шанс, посмотрите на casalib, в частности (относящиеся к теме) функции contentAsMovieClip и createClassByName в swfLoad
edit
Похоже, я должен был проверить это больше.Оказывается, что если вы сделаете это var s:Sprite = (new assetClass() as Sprite)
, он преобразует s
в любой класс assetClass (), а не наоборот, поэтому, если вы сделаете трассировку s
, это не будет Sprite.подробнее
способ, которым я имею дело с этим, - это создать общий спрайт (на самом деле CasaSprite) и добавить var view:Sprite
(или displayObject или MovieClip) в качестве дочернего элемента.Вероятно, это не тот ответ, который вы искали, но он работает.