Flash: ширина мувиклипа ActionScript 3.0 - PullRequest
0 голосов
/ 30 ноября 2010

, пожалуйста, помогите мне, я полностью потерян в AS3.0 с шириной MovieClip.

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

Моя проблема на данный момент заключается в изменении ширины (это горизонтальное меню) мувиклипов (каждый значок в менюмувиклип).

Если ширина слишком мала (не уверен, что она может быть наименьшей), фрагмент ролика не отображается.

Но это не полная проблема, если яустановите ширину фрагмента ролика равной 2.8, он по-прежнему отображается с правильной шириной.

Только после цикла for, который сбрасывает соответствующие значения ширины значков, и затем моего метода reposition (), значки не отображаются.не показывать.

Я явно просто не понимаю какой-то аспект MovieClips или Numbers в AS3, надеюсь, кто-то может помочь.

'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, то два дляЦиклы изменят размер всех значков, которые должны быть изменены до 2.8.

Затем изменение положения помещает каждый значок рядом друг с другом.

Но проблема в том, что изменение положения не работает, если iconWidth слишком мала.

НО, в репозиции, если я вручную добавил строку, чтобы установить значок, который в настоящее время имеет ширину от 50 до ширины 2,8, он все равно появляется!Пожалуйста, помогите = [

1 Ответ

0 голосов
/ 01 декабря 2010

, как упоминалось в комментариях выше, трудно сказать что-то конкретное, используя ваш пример кода, но:* imho, безопасно и удобно вычислять координаты и размеры как int, а не Number - полупиксель никогда не виден* на вашем месте я бы изменил scaleX и scaleY свойства всего меню (или того, что является родительским для ваших значков), если оно не подходит, вместо того, чтобы связываться с каждым ребенкомтакже, если вы добавите больше кода (или, возможно, разместите пример на wonderfl.net) - дайте мне знать, комментируя этот ответ, пожалуйста:)

...