2010-11-30 3 views
0

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

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

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

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

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

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

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

«черный» содержит список мувиклипов (значки меню).

Вот код, где все идет не так (это идет не так, когда «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, он все равно появляется! Пожалуйста, помогите = [

+0

Я не знаю w, но я бы прошел через код с отладчиком и посмотрел на все значения, когда они меняются. – AttackingHobo 2010-11-30 19:47:02

ответ

0

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

также, если вы добавите больше код (или, возможно, отправьте пример на wonderfl.net) - дайте мне знать, комментируя этот ответ, пожалуйста :)