簡體   English   中英

來自圖書館的動態圖片!

[英]Dynamic images from LIBRARY!

嘗試從庫而不是外部動態加載圖像,因為我希望在啟動網站時加載這些圖像。 基本上我有幾個按鈕,每個按鈕都返回一個事件,該事件引發要捕獲的特定圖像名稱。 這是功能;

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);
} 

因此,如何通過使用String來使此函數動態化,然后從庫中獲取與該String相關的圖像。

另一個選擇是使用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);
}

有很多選項,雖然不是很靈活,但這里是較簡單的選項之一。

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

          //etc....

          default:
            return null;
     }
   }
}

您還可以將所有圖像對象放入一個數組中,以確保為每個圖像對象分配一個名稱,然后使用Array some()方法查找與該名稱對應的對象並將其返回。

然后,您可以這樣做:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM