2010-11-30 39 views
0

s'il vous plaît aidez-moi, je suis complètement perdu dans AS3.0 avec des largeurs MovieClip. Fondamentalement, je suis en train de coder un menu, qui au lieu d'avoir une barre de défilement s'il y a trop d'éléments pour l'écran, utilise un effet d'agrandissement, permettant à l'utilisateur de faire défiler le menu avec la souris.Flash: ActionScript 3.0 MovieClip Largeurs

Mon problème pour le moment est de redimensionner la largeur (c'est un menu horizontal) des MovieClips (chaque icône sur le menu est un MovieClip).

Si la largeur est trop petite (il n'est pas certain que la valeur la plus faible puisse être atteinte), le clip n'apparaît pas.

Mais ce n'est pas tout le problème, si je définis la largeur d'un clip à 2,8, il apparaît toujours, avec la bonne largeur.

C'est seulement après une boucle for qui réinitialise les largeurs d'icônes appropriées, puis ma méthode 'reposition()' que les icônes n'apparaissent pas.

Je ne comprends tout simplement pas certains aspects de MovieClips ou de Numbers dans AS3, j'espère que quelqu'un peut vous aider. 'Black' contient une liste de MovieClips (les icônes de menu).

Voici le code où tout se passe mal (il va mal quand « IconWidth » est très faible):

//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; 
    } 
} 
} 

donc par exemple, si IconWidth est calculée à 2,8, puis les deux pour les boucles va redimensionner toutes les icônes qui devraient être redimensionnées à 2.8.

Ensuite, repositionnez chaque icône l'une à côté de l'autre.

Mais le problème est que le repositionnement ne fonctionne pas si iconWidth est trop petit. MAIS, en repositionnement, si j'ai ajouté manuellement une ligne pour définir une icône qui a actuellement une largeur de 50 à 2.8, elle s'affiche toujours! S'il vous plaît aider = [

+0

Je ne sais pas w, mais je voudrais passer par le code avec le débogueur et regarder toutes les valeurs quand ils sont modifiés. – AttackingHobo

+0

Je suis triste de dire que j'ai déjà :(J'ai regardé les largeurs, ils sont tout ce qu'ils devraient être: sauf que iconWidth serait 2.809 ... mais il met la largeur de 2.8 ... mais après ça la largeur est définitivement fixée à 2,8, les positions x et y sont bien, je ne sais pas – tre

+0

hi tre, pourriez-vous fournir un morceau de code fonctionnel? Je veux dire un échantillon que nous pouvons compiler et voir ce que vous voulez dire :) Merci –

Répondre

0

comme mentionné dans les commentaires ci-dessus, il est difficile de quoi que ce soit à l'aide spécifique dire à votre exemple de code, mais:
* IMHO il est sûr et convinient pour calculer les coordonnées et les tailles comme int, non Number - demi-pixel est jamais vu
* si j'étais vous j'avais changé scaleX et scaleY propriétés du menu entier (ou tout ce qui est parent pour vos icônes) si elle ne rentre pas, au lieu de jouer avec tous les enfants

même si vous ajoutez plus code (ou peut-être poster un exemple sur wonderfl.net) - laissez-moi savoir en commentant cette réponse s'il vous plaît :)