2010-09-07 2 views
0

Попытка загрузки изображений динамически из библиотеки НЕ извне, так как я хочу, чтобы эти изображения загружались при запуске сайта. В основном у меня есть несколько кнопок, каждая кнопка возвращает событие, которое бросает определенное имя изображения для захвата. Вот функция;Динамические изображения из БИБЛИОТЕКИ!

function sendDisplayData(e:MouseEvent){ 
    display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; //name of image eg. "myImageName" in the library; 

    //create the image object 
    var imgObj:Object = e.currentTarget.parent.menuItemName.text; 
    addChild(imgObj); 
} 

Так в основном, когда функция вызывается, я хочу, чтобы создать экземпляр имен с именами реальных мувиклипов в библиотеке. Функция ниже работает, но только для одного изображения.

function sendDisplayData(e:MouseEvent){ 
    display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; 

    //create the image object 
    var image:Salads = new Salads(); //the class of the image is "Salads" 
    display_mc.addChild(Salads); 
} 

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

ответ

2

Другой вариант заключается в использовании getDefinitionByName:

function getDisplayObject(linkage:String):DisplayObject { 
    var clazz:Class = getDefinitionByName(linkage) as Class; 
    return new clazz(); 
} 

Так что, если у вас уже есть имя собственное тяг, вы могли бы сделать что-то вроде этого:

function sendDisplayData(e:MouseEvent){ 
    //create the image object 
    var imgObj:DisplayObject = getDisplayObject(e.currentTarget.parent.menuItemName.text); 
    addChild(imgObj); 
} 
+0

благодарит много брата, который сработал! – 1337holiday

+0

@ 1337holiday. Не беспокойся! –

1

Есть много вариантов, здесь один из более простых, хотя и не очень гибкий.

 
public class Inventory 
{ 
    public static function getMovieClipByName(value:String):MovieClip 
    { 
     switch(value) 
     { 
      case "Salads": 
      return new Salads(); 
      break; 

      //etc.... 

      default: 
      return null; 
    } 
    } 
} 

Вы также можете поместить все свои объекты изображения в массиве, не забудьте присвоить имя каждому из них, а затем использовать некоторый метод() массив, чтобы найти объект, соответствующий имени и вернуть его.

Тогда вы могли бы сделать это:

 
function sendDisplayData(e:MouseEvent){ 
    var _name:String = display_mc.displayName.text = e.currentTarget.parent.menuItemName.text; 

    //create the image object 
    var image:MovieCLip = Inventory.getMovieClipByName(_name); 
    display_mc.addChild(image); 
} 
+0

благодарит за вашу помощь. – 1337holiday

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