0

请帮帮我,我在 AS3.0 中完全迷失了 MovieClip 宽度。

基本上,我正在编写一个菜单,如果屏幕上有太多项目,它不会有滚动条,而是使用放大效果,允许用户使用鼠标沿着菜单滚动。

我目前的问题是调整 MovieClips 的宽度(它是一个水平菜单)(菜单上的每个图标都是一个 MovieClip)。

如果宽度太小(不确定它可以达到的最低值),则影片剪辑不会显示。

但这还不是问题的全部,如果我将影片剪辑的宽度设置为 2.8,它仍然会以正确的宽度显示出来。

只有在 for 循环重置适当的图标宽度之后,然后我的“reposition()”方法才会显示图标。

我显然只是不了解 AS3 中 MovieClips 或 Numbers 的某些方面,希望有人能提供帮助。

'black' 包含影片剪辑列表(菜单图标)。

这是所有出错的代码(当 'iconWidth' 非常小时会出错):

//if there are icons to the left
if ((s-leftEffect) > 1){
  //loop over all icons to the left
  for (var lu:int = 0; lu <= s-leftEffect; lu++){
   //set the icon's new width
   black[lu].width = iconWidth;
  }
 }
 //if there are icons to the right
 if ((s+rightEffect) < numShowing){
  //loop over all icons to the right
  for (var ru:int = s+rightEffect; ru < numShowing; ru++){
   //set the icon's new width
   black[ru].width = iconWidth;
  }
 }
 reposition();
}

function reposition(){
 if (numShowing > 16){
  //set the first menu icon to the left of its container
  black[0].x = 0;
  //for all icons in the menu
  for (var i:int = 1; i<numShowing; i++){
   //set position according to width
   black[i].x = black[i-1].x + black[i-1].width;
  }
 }
}

例如,如果 iconWidth 计算为 2.8,则两个 for 循环将调整所有应调整为 2.8 的图标的大小。

然后重新定位将每个图标彼此相邻。

但问题是如果 iconWidth 太小,重新定位不起作用。

但是,在重新定位时,如果我手动添加一条线来设置当前宽度为 50 到 2.8 的图标,它仍然会显示!请帮忙=[

4

1 回答 1

0

正如上面的评论中提到的,使用你的代码示例很难说出任何具体的内容,但是:
*恕我直言,计算坐标和大小是安全和方便的int,而不是Number- 半像素从未见过
* 如果我是你,我会改变scaleXscaleY整个菜单的属性(或任何图标的父级)如果它不适合,而不是在

添加更多代码(或者可能在 wonderfl.net 上发布示例)时弄乱每个孩子 - 通过评论让我知道这个答案请:)

于 2010-11-30T23:46:05.567 回答