2013-12-12 5 views
0

Мне нужна помощь с позициями кнопок в AS3. То же, что и перед темой, я сделал IRC-клиент с AS3, но когда пользователь присоединится к каналу, будет добавлена ​​кнопка, но если уже есть кнопка, и пользователь присоединится к новому каналу в IRC, будет добавлена ​​новая кнопка также, это для каждого канала, который пользователь присоединяется, но должен быть расположен после последней кнопки (бок о бок). То же самое, если пользователь присоединяется к большему количеству каналов. Как я могу сделать это наилучшим образом с позиций x и y?Положение кнопок as3

Это мой код сейчас:

function onChannelButton(channel) 
{ 
var test:MovieClip = new MovieClip(); 
var btn:Button; 

for(var j:int = 0; j < btn.length; j++) { 
    btn = new Button(); 
    btn.name = "btn"; 
    btn.label = channel; 
    btn.width = 90; 
    btn.x = 120; 
    btn.y = 487.25; 
    test.addChild(btn); 
    } 
    addChild(test); 
} 

Будем надеяться, что и может мне помочь! Благодаря!

ответ

2

Попробуйте это:

const PADDING:uint = 10; 
const NUM_BUTTONS:uint = 10; 

onChannelButton(); 

function onChannelButton():void { 
    var test:Sprite = new Sprite(); 
    var btn:Button; 

    //NUM_BUTTONS or btn.length ? (Don't know about your Button class 
    for (var i:int = 0; i < NUM_BUTTONS; i++) 
    { 
      btn = new Button(); 
      btn.name = "btn"; 
      btn.width = 90; 
      btn.x = (btn.width + PADDING) * i; 
      test.addChild(btn); 
    } 

    addChild(test); 
} 
+0

gPeart Спасибо за вашу помощь, но я получаю 10 кнопок, см .: http://i42.tinypic.com/w174p1.png - Значение если я набираю '/ join #test', должна быть добавлена ​​кнопка, но если я присоединяюсь к еще одному каналу, тогда должна быть добавлена ​​новая кнопка для переключения между каналами, но второй канал, к которому я присоединился, и вторая кнопка должна позиционироваться после первой кнопки (первый канал, к которому я присоединился), например: http://i42.tinypic.com/j5cl0i.png –

+0

Большое спасибо! Это помогает мне на правильном пути попробовать каждый раз, и это нормально теперь, только я должен получить + новую функцию родительского ребенка, чтобы установить позиции кнопок. –

+0

Yo u приветствуются! – gabriel

0

Я обычно делаю что-то вроде следующего, используя ваш итератор j, чтобы определить положение x и y.

Я создал четыре переменные, чтобы надеяться сделать код довольно понятным. В этом случае положение у не меняется на баттоне, именно поэтому btnSpacingY устанавливается в 0.

var btnStartX:Number = 120; 
var btnStartY:Number = 487.25; 
var btnSpacingX:Number = 120; 
var btnSpacingY:Number = 0; 

function onChannelButton(channel) { 
    var test:MovieClip = new MovieClip(); 
    var btn:Button; 

    for (var j:int = 0; j < btn.length; j++) { 
     btn = new Button(); 
     btn.name = "btn"; 
     btn.label = channel; 
     btn.width = 90; 
     btn.x = btnStartX + (j * btnSpacingX); 
     btn.y = btnStartY + (j * btnSpacingY); 
     test.addChild(btn); 
    } 
    addChild(test); 
} 
+0

спасибо за Ваш ответ! Но «длина» - проблема в этом, потому что я получаю следующее: «Сцена 1,« Главная »,« Кадр 3 », строка 689 \t 1119: Доступ к возможно неопределенной длине свойства через ссылку со статическим типом fl.controls: Button. "и fl.controls.Button добавлено, что в этом плохого? –

+0

Да, извините, я просто сосредоточился на части вашего вопроса, о котором вы спрашивали. Вам нужно исправить цикл for. Измените 'btn.length' к числу кнопок, которые вы хотите создать. (например, j <10) – SCCOTTT

Смежные вопросы