2013-10-07 4 views
0

Я пытаюсь сделать небольшой проект для своего класса, и хотя я знаю, как это сделать, я бы предпочел сделать это более интуитивным способом, чтобы я мог избежать копирования и вставки нагрузки по сути, тот же код. Идея состоит в том, чтобы иметь функцию, которая создаст экземпляр объекта класса с его собственным уникальным именем, задает его положение/размер/и т. Д., А затем добавит его на сцену. Глядя на это (то, что у меня есть сейчас) может немного помочь.Как я могу создать функцию для создания дочернего элемента объекта в библиотеке на основе предоставленных переменных?

//Set up variables for all deco pieces 
var decoGreen:GreenBall; 
var decoRed:RedBall; 
var decoStar:Star; 
var decoFlower:Flower1; 
var decoYellow:YellowBall; 
var decoBlue:BlueBall; 

//Functions to allow easier object placement 
function makeDeco(posX:Number, posY:Number, decoName:String, rootClass:Object):void 
{ 
    decoName = new (rootClass)(); 
    decoName.x = posX; 
    decoName.y = posY; 
    addChild((decoName)); 

} 
makeDeco(90,320,"greenBall",GreenBall) 

Теперь, очевидно, этот код не работает, и сейчас это довольно грубо, но я думаю, что это достаточно, чтобы понять, что я пытаюсь достичь здесь. Спасибо всем, кто пытается расшифровать мой беспорядок! : D

ответ

0

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

function makeDeco(posX:Number, posY:Number, decoName:String):void 
{ 
    var DecoClass:Class = getDefinitionByName(decoName) as Class; 
    var deco:DisplayObject = new DecoClass(); 
    deco.x = posX; 
    deco.y = posY; 
    addChild((deco)); 
} 
makeDeco(90,320,"greenBall") 

Вам не нужно определять переменные изначально, как вы сделали , при условии, что все они настроены на «Экспорт как actionscript» в библиотеке. Например, вызов строки «greenBall» означает, что у вас есть клип в библиотеке с именем класса greenBall

+0

Это имеет смысл, однако я все еще не могу заставить его работать, не бросая мне ошибки. Что эта ошибка пытается мне сказать? (Я запустил код выше). 'ReferenceError: Ошибка # 1065: Variable decoGreen не определен. \t на глобальном/flash.utils :: getDefinitionByName() \t в ChristmasDecorationFSt_fla :: MainTimeline/makeDeco() \t в ChristmasDecorationFSt_fla :: MainTimeline/frame1() ' – user1849935

+0

у вас есть клип под названием "decoGreen" в библиотеке ? – Ronnie

+0

, а не фактическое имя, но связь AS скорее должна быть названа 'decoGreen' – Ronnie

Смежные вопросы