2011-03-28 27 views
1

我試圖生成數組的循環按鈕,但我不能讓圖標風格和樣式名工作:(試圖生成一個循環按鈕,但圖標屬性導致問題

 for (var x:int = 0; x < smileys.length; x++) { 
      var emoticon:Button = new Button(); 
      var label:String = smileys[x][0]; 
      emoticon.width = 24; emoticon.height = 24; 
      emoticon.x = positionX; emoticon.y = 0; 
      emoticon.styleName('buttonImg'); // doesn't work... 
      emoticon.setStyle("icon", "@Embed(source='smileys/"+smileys[x][0]+".png')"); // doesn't work 
      emoticonsGroup.addChild(emoticon); 
      positionX+= 24; 
     } 

我也試過在迴路中插入這一點,但它不工作也不:

 [Embed(source="smileys/"+smileys[x][0]+".png")] // fb doesn't like that 
     var buttonIcon:Class; 
     emoticon.setStyle("icon", buttonIcon); 

回答

1

你不能把變量嵌入,因爲它是編譯器,而不是一個運行時分辨率的指令現在,你可以是

  • 創造儘可能多的變量你的笑臉,然後有N個靜態的嵌入
  • 創建自己的皮膚,它接受一個ImageLoader一個按鈕,所有動態加載圖像按鈕內
  • 預加載的SWF您的圖像並使用emoticon.setStyle("icon", getDefinitionByName(smileys[x][0]))其中smileys[x][0]是Flash庫中笑臉的鏈接名稱。
+0

好的,那好像是很長的代碼,比實際的長。 我來自HTML/PHP世界,並用於使用數組來創建快速顯示元素,所以我試圖在ActionScript – younes0 2011-03-28 09:50:47

+0

中執行相同的過程這基本上是一個好主意,但是Embed將圖像寫入swf的二進制文件, HTML行爲更類似於'Loader'。你只需要創建一個'Sprite'對象(可以將其'buttonMode'設置爲true),並將'addChild'和'Loader'加入到圖片的URL中。 – Kodiak 2011-03-28 09:59:37