преобразовать динамическое имя строки в мувиклип, чтобы создать надстройку - PullRequest
0 голосов
/ 01 июля 2010

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

например

private function buttonClicked(nameOfTheButt:String):void
{
    thumbs.addChild(nameOfTheButt);
}

buttonClicked("homepage");

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


это реальный пример, основанный на некоторых ответах, которые я получаю:

thumbs_homepage = new MovieClip();
thumbs_casehistory = new MovieClip();
thumbs_contacts = new MovieClip();


public function showThumbs(thumbsToShow:String):void
{
    //dynamic addchild
}

showThumbs("thumbs_homepage"); //or "thumbs_contacts" or "thumbs_casehistory"

Ответы [ 4 ]

1 голос
/ 01 июля 2010
thumbs_homepage = new MovieClip();
thumbs_homepage.name = "thumbs_homepage";

thumbs_casehistory = new MovieClip();
thumbs_casehistory.name = "thumbs_casehistory";

thumbs_contacts = new MovieClip();
thumbs_contacts.name = "thumbs_contacts";


private function buttonClicked (nameOfTheButt:String): void {

    var _instance: MovieClip = getChildByName(nameOfTheButt) as MovieClip;

    thumbs.addChild(_instance);
}


showThumbs(thumbs_homepage.name);

надеюсь, это поможет .. С уважением

1 голос
/ 01 июля 2010

Если "homepage" является свойством this объекта, вы можете использовать:

thumbs.addChild(this[nameOfTheBtn]);

Если это дочерний объект this объекта, вы можете сделать:

thumbs.addChild(this.getChildByName(nameOfTheBtn));
0 голосов
/ 03 июля 2010

Почему бы просто не передать мувиклип напрямую? Предполагая, что "превью" это спрайт или мувиклип, который уже существует:

    
thumbs_homepage = new MovieClip();
thumbs_casehistory = new MovieClip();
thumbs_contacts = new MovieClip();

public function showThumbs(mc:MovieClip):void
{
    thumbs.addChild(mc);
}

// adds thumbs_homepage to thumbs
showThumbs(thumbs_homepage);


0 голосов
/ 01 июля 2010

Во-первых, вам нужна ссылка на объект, который содержит эти мувиклипы.Попробуйте решения ниже.Допустим, вы кодируете свой класс документа следующим образом:

package
{
  public class Main extends MovieClip
  {
     public var myMovie_1:MovieClip;
     public var myMovie_2:MovieClip;
     public var myMovie_3:MovieClip;

     public function Main():void
     {
        myMovie_1 = new MovieClip();
        myMovie_2 = new MovieClip();
        myMovie_3 = new MovieClip();

        this.addChildByInstanceName("myMovie_1");
     }

     public function addChildByInstanceName(p_objectInstanceName:String):DisplayObject
     {
        if(!this.contains(this["p_objectInstanceName"]))
        {
           this.addChild(this["p_objectInstanceName"]);
        } else {
           throw(new Error("You cannot add a child twice in the display list!"));
        }
        return this["p_objectInstanceName"] as DisplayObject;
     }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...