2011-03-28 120 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