Просмотр полной версии : Вставить компонент, имея String
Необходимо вставить во ViewStack 10 (100) компонентов, все компоненты имеют свое названия.
Вначале получаем xml с названием всех компонентов которые необходимо вставить
обычно так:
var comp:Peoples = new Peoples()
comp.id = "viewPeoples";
views.addChild(comp);
из этого сделать:
var str:String = "Peoples"
// что здесь писать чтоб из String получить компонент
comp.id = "viewPeoples";
views.addChild(comp);
прочитал темы, которые нашел в посике по слову getDefinitionByName
так работает:
// если в classname написать мой компонент Peoples который я хочу вставить, то уже на работает
// пишет ошибку Variable Peoples is not defined.
public var classname:String = "mx.controls.Button";
var ClassRef:Class = getDefinitionByName(classname) as Class;
var component:DisplayObject = new ClassRef();
addChild(component);
а если пробовать туже кнопку вставить во ViewStack а затем последний вставить на сцену, то уже не работает
// пишет ошибку
// Type Coercion failed: cannot convert mx.controls::Button@191b56d1 to mx.core.Container.
public var classname:String = "mx.controls.Button";
var ClassRef:Class = getDefinitionByName(classname) as Class;
var component:DisplayObject = new ClassRef();
var views:ViewStack = new ViewStack();
views.addChild(component);
addChild(views);
Значит ViewStack не принимает в качестве детей кнопки. Только контейнеры.
Вставляем Button в Container, затем вставляем Container во ViewStack, все работает.
Но когда я пишу собственный компонент, который основан просто на Button, то приложение отказывается его вставлять куда либо, про ViewStack я вообще не говорю даже
ps test.swf и test-debug.swf удалены для уменьшения веса
Ну так компонент должен быть вкомпилирован в проект. Если он ни разу не использовался и не упоминается, то он не будет вкомпилирован.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.